判断二叉树是否相同

判断二叉树是否相同

当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 }  
原文地址:https://www.cnblogs.com/zfc-java/p/7577890.html