# 101-对称二叉树

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/symmetric-tree

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

# 一、题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

输入:root = [1,2,2,3,4,4,3]

输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]

输出:false

提示:

  • 树中节点数目在范围 [1, 1000] 内
  • -100 <= Node.val <= 100

进阶:你可以运用递归和迭代两种方法解决这个问题吗?

# 二、解法

左子树的值要与右子树相同。

左子树的左孩子与右子树的右孩子的值相同。

左子树的右孩子与右子树的左孩子值相同。

递归。

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if (root == nullptr) {
            return false;
        }
        return isEqual(root->left, root->right);
    }

    bool isEqual(TreeNode* left, TreeNode* right) {
        if (left == nullptr && right == nullptr) {
            return true;
        }
        if (left == nullptr && right) {
            return false;
        } else if(left && right == nullptr) {
            return false;
        }
        if (left->val != right->val) {
            return false;
        }
        return isEqual(left->left, right->right) && isEqual(left->right, right->left);
    }
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24