劍指Offer——對稱的二叉樹
阿新 • • 發佈:2017-11-03
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) returntrue; 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——對稱的二叉樹