当root1的左子树与root2的左子树相同,root1的右子树与root2的右子树相同时,这两颗二叉树相同。
当root1的左子树与root2的右子树相同,root1的右子树与root2的左子树相同时,这两颗二叉树同样相同。
以下是实现代码
- bool IsBSTEqual(BNode* root1,BNode* root2)
- {
- if (root1==NULL && root2==NULL)
- {
- return true;
- }
- else if (root1==NULL || root2==NULL)
- {
- return false;
- }
- else
- {
- if (root1->data != root2->data)
- {
- return false;
- }
- bool is_left = IsBSTEqual(root1->left,root2->left);
- bool is_right = IsBSTEqual(root1->right,root2->right);
- if (is_left&&is_right)
- return true;
- else
- {
- is_right = IsBSTEqual(root1->right,root2->left);
- is_left = IsBSTEqual(root1->left,root2->right);
- if (is_left&&is_right)
- return true;
- else
- return false;
- }
- }
- }