struct BinaryNode
{
int data;
BinaryNode * left;
BinaryNode * right;
};
1、判断两个二叉树是否等价
bool isEqual(BinaryNode *Tree1,BinaryNode *Tree2)
{
if(Tree1 == NULL && Tree2 == NULL)
return true;
if(!Tree1||!Tree2)
return false;
if(Tree1->data == Tree2->data)
return isEqual(Tree1->left,Tree2->left) && isEqual(Tree1->right,Tree2->right);
else
return false;
}
2、判断二叉树是否是排序二叉树
bool IsSearchTree(BinaryNode *t)
{
if(!t)
return true;
else if(!(t->left)&&!(t->right))
return true;
else if((t->left)&&!(t->right)){
if(t->left->data > t->data)
return false;
else
return IsSearchTree(t->left);
}
else if((t->right)&&!(t->left)){
if(t->right->data < t->data)
return false;
else
return IsSearchTree(t->right);
}
else{
if((t->left->data > t->data) || (t->right->data < t->data))
return false;
else
return (IsSearchTree(t->left) && IsSearchTree(t->right));
}
}