# 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
← 100-相同的树 104-二叉树的最大深度 →