1. 程式人生 > >劍指Offer——對稱的二叉樹

劍指Offer——對稱的二叉樹

left 請實現一個函數 實現 amp == 不為 symmetric 解法 code

題目描述:

請實現一個函數,用來判斷一顆二叉樹是不是對稱的。註意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為對稱的。


分析:

遞歸解法。

如果對稱點一個有一邊為空一邊不為空,或者是對稱點數值不一樣,該二叉樹就不是對稱的。


代碼:

 1 /*
 2 struct TreeNode {
 3     int val;
 4     struct TreeNode *left;
 5     struct TreeNode *right;
 6     TreeNode(int x) :
 7             val(x), left(NULL), right(NULL) {
 8     }
9 }; 10 */ 11 class Solution { 12 public: 13 bool isSymmetrical(TreeNode* pRoot) { 14 if(pRoot == NULL) return true; 15 return isMirror(pRoot->left, pRoot->right); 16 } 17 bool isMirror(TreeNode* p1, TreeNode* p2) { 18 if(p1 == NULL && p2 == NULL) return
true; 19 if(p1 == NULL || p2 == NULL) return false; 20 if(p1->val != p2->val) return false; 21 return isMirror(p1->left, p2->right) && isMirror(p1->right, p2->left); 22 } 23 };

劍指Offer——對稱的二叉樹