[剑指Offer] 58.对称的二叉树

题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

【思路】递归,关键是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 };

 

posted @ 2017-03-18 13:53  Strawberry丶  阅读(138)  评论(0编辑  收藏  举报