guanpengchn / guanpengchn.github.io

:memo: code on DEV branch, blogs on ISSUES
https://guanpengchn.github.io
18 stars 9 forks source link

对称的二叉树 #50

Open guanpengchn opened 5 years ago

guanpengchn commented 5 years ago

题目描述

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

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    bool Calc(TreeNode* left, TreeNode* right){
        if(left==nullptr){
            return right == nullptr;
        }
        if(right==nullptr){
            return false;
        }
        if(right->val != left->val){
            return false;
        }
        return Calc(left->right, right->left) && Calc(left->left, right->right);
    }
    bool isSymmetrical(TreeNode* pRoot)
    {
        if(!pRoot){
            return true;
        }
        return Calc(pRoot->left, pRoot->right);
    }

};