题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
【思路】递归,关键是isSame函数中的最后一句
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 isSame(TreeNode* p,TreeNode* q) 14 { 15 if(p == NULL && q == NULL) 16 return true; 17 if(p == NULL || q == NULL) 18 return false; 19 if(p->val != q->val) 20 return false; 21 return isSame(p->left,q->right) && isSame(p->right,q->left); 22 } 23 24 bool isSymmetrical(TreeNode* pRoot) 25 { 26 if(pRoot == NULL) 27 return true; 28 return isSame(pRoot->left,pRoot->right); 29 } 30 31 };