判断二叉树是否相同
判断二叉树是否相同
当root1的左子树与root2的左子树相同,root1的右子树与root2的右子树相同时,这两颗二叉树相同。
当root1的左子树与root2的右子树相同,root1的右子树与root2的左子树相同时,这两颗二叉树同样相同。
1 bool IsEquals(BNode* root1,BNode* root2) 2 { 3 if (root1==NULL && root2==NULL) //都是空树 4 { 5 return true; 6 } 7 else if (root1==NULL || root2==NULL) //其中一棵树为空 8 { 9 return false; 10 } 11 else 12 { //两棵树都不为空 13 if (root1->data != root2->data) //判断根结点是否相等 14 { 15 return false; 16 } 17 18 bool is_left = IsEquals(root1->left,root2->left); //左子树相等? 19 bool is_right = IsEquals(root1->right,root2->right); //右子树相等 20 21 if (is_left&&is_right) //左右子树对应相等 22 { 23 return true; 24 } 25 else 26 { 27 is_right = IsEquals(root1->right,root2->left); 28 is_left = IsEquals(root1->left,root2->right); 29 30 if (is_left&&is_right) 31 { 32 return true; 33 } 34 else 35 { 36 return false; 37 } 38 } 39 } 40 41 }
由于本人技术有限,有不足之处,请指出,谢谢!!!欢迎评论。。。