继续刷LeetCode,第101题,判断给定的一个二叉树是否为对称二叉树。
分析:
这个题目也是典型的递归的应用,不过要注意的是判断的条件。通过递归调用,比较根节点的左右子树的值是否相等,然后比较左子树的右孩子是否等于右子树的左孩子,再比较左子树的左孩子是否等于右子树的右孩子。这样递归的遍历所有节点,出现不等的时候就返回false,否则直到所有节点值对应相等,就返回true。
问题:
1、递归的方法应用;
2、注意比较的两个是哪两个;
附上代码:
/**
* 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 isSymmetric(TreeNode* root) {
if(root==NULL)
return true;
return isSymmetric(root->left,root->right);
}
bool isSymmetric(TreeNode* left,TreeNode* right)
{
if(left==NULL&&right==NULL)
return true;
if(left==NULL||right==NULL)
return false;
if(left->val!=right->val)
return false;
else
return isSymmetric(left->left,right->right)&&isSymmetric(left->right,right->left);
}
};