当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;
- }
- }
- }
本文介绍了一种用于判断两棵二叉树是否相同的算法。该算法不仅比较根节点的数据是否一致,还会递归地检查左子树和右子树是否分别对应相等,或者左子树与另一棵树的右子树相等且右子树与另一棵树的左子树相等的情况。
914

被折叠的 条评论
为什么被折叠?



