leetcode 101 对称二叉树

99 阅读1分钟

leetcode 101 对称二叉树

思路

  1. 左右子树同时为空,为对称(true);
  2. 其中一个为空,为不对称(false);
  3. 左右值相同,对称(true)本层判断结束,深入到下一层;
  4. 一直递归,每一环节都满足上述 1 2 3 条件,则树对称;

题解

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        return ismirror(root->left, root->right);
    }
    
    bool ismirror(TreeNode* p, TreeNode* q){
        // 都为NULL
        if(!p && !q)
            return true;
        // 有一个为NULL
        if(!p || !q)
            return false;
        // 左右值相等,进入下一层递归
        if(p->val == q->val)
            return ismirror(p->left, q->right) && ismirror(p->right, q->left);
        return false;
    }
};