題目描述:函數
請實現一個函數,用來判斷一顆二叉樹是否是對稱的。注意,若是一個二叉樹同此二叉樹的鏡像是一樣的,定義其爲對稱的。spa
思路分析:code
二叉樹的鏡像就是左右相反,對稱二叉樹即鏡像相等。利用一個遞歸函數,輸入爲兩顆樹,若同爲空,則對稱。若一棵爲空,一棵不爲空,則不對稱。若兩者的指不相等,則不對稱,若樹1的左子樹和樹2的右子樹相等且樹1的右子樹和樹2的左子樹相等,則對稱。blog
代碼:遞歸
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 symmetric(TreeNode* pRoot1, TreeNode* pRoot2) 14 { 15 if(pRoot1 == nullptr && pRoot2 == nullptr) 16 return true; 17 if(pRoot1 == nullptr || pRoot2 == nullptr) 18 return false; 19 if(pRoot1->val != pRoot2->val) 20 return false; 21 return (symmetric(pRoot1->left, pRoot2->right) && symmetric(pRoot2->left, pRoot1->right)); 22 23 } 24 bool isSymmetrical(TreeNode* pRoot) 25 { 26 if(pRoot == nullptr) 27 return true; 28 return symmetric(pRoot, pRoot); 29 } 30 31 };