题目描述
请实现一个函数,用来判断一棵二叉树是不是对称的。
如果一棵二叉树和它的镜像一样,那么它是对称的。
样例
样例
如下图所示二叉树[1,2,2,3,4,4,3,null,null,null,null,null,null,null,null]为对称二叉树:
1
/ \
2 2
/ \ / \
3 4 4 3
如下图所示二叉树[1,2,2,null,4,4,3,null,null,null,null,null,null]不是对称二叉树:
1
/ \
2 2
\ / \
4 4 3
算法1
一个是树的递归遍历 一个是比较的边界条件要注意
C++ 代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool issame(TreeNode* right,TreeNode* left)
{
if(right == NULL && left == NULL )
return true;
else if(right == NULL )
return false;
else if(left == NULL)
return false;
if(right->val != left->val)
return false;
return issame(right->right,left->left) && issame(right->left,left->right);
}
bool isSymmetric(TreeNode* root) {
if(root == NULL) return true;
return issame(root->right,root->left);
}
};
666