1. 程式人生 > >Leetcode-951 Flip Equivalent Binary Trees(翻轉等價二叉樹)

Leetcode-951 Flip Equivalent Binary Trees(翻轉等價二叉樹)

 1 class Solution
 2 {
 3     public:
 4         void swapTree(TreeNode *root)
 5         {
 6             TreeNode *p= root->left;
 7             root->left = root->right;
 8             root->right=p;
 9         }
10         bool isSameTree(TreeNode* p, TreeNode* q)
11         {
12 if(!p&&!q) 13 return true; 14 else if(p&&!q) 15 return false; 16 else if(!p&&q) 17 return false; 18 if(p->val!=q->val) 19 return false; 20 return
isSameTree(p->left,q->left)&&isSameTree(p->right,q->right); 21 } 22 bool nodeequal(TreeNode* p, TreeNode* q) 23 { 24 if(p->left==NULL&&q->left!=NULL 25 ||p->right==NULL&&q->right!=NULL 26 ||p->left!=NULL&&q->left==NULL
27 ||p->right!=NULL&&q->right==NULL) 28 return false; 29 if(p->left&&p->left->val!=q->left->val) 30 return false; 31 if(p->right&&p->right->val!=q->right->val) 32 return false; 33 return true; 34 } 35 bool flipEquiv(TreeNode* root1, TreeNode* root2) 36 { 37 if(root1==NULL&&root2!=NULL|| 38 root1!=NULL&&root2==NULL) 39 return false; 40 if(root1==NULL&&root2==NULL) 41 return true; 42 if(root1->left&&root1->right 43 &&!root2->right&&!root2->left) 44 return false; 45 if(!nodeequal(root1,root2)) 46 swapTree(root2); 47 flipEquiv(root1->left,root2->left); 48 flipEquiv(root1->right,root2->right); 49 return isSameTree(root1,root2); 50 } 51 };