LeetCode-101-对称二叉树

题目

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

示例 1:

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

示例 2:

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

提示:

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

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

题解

比较的时候需要比较两个节点,所以题目给的isSymmetric是不够用的。

这里的isSymmetric函数先判断根节点是否为null,不为nullrecur判断左右子树是否是对称的;

recur函数判断:

如果左右节点都为null,返回true

如果左右节点其中一个为null或者两个节点的值不相同,返回false

不然就继续往下判断,recur(L.left, R.right) && recur(L.right, R.left)

1
2
3
4
5
6
7
8
9
10
class Solution {
public boolean isSymmetric(TreeNode root) {
return root == null || recur(root.left, root.right);
}
boolean recur(TreeNode L, TreeNode R) {
if (L == null && R == null) return true;
if (L == null || R == null || L.val != R.val) return false;
return recur(L.left, R.right) && recur(L.right, R.left);
}
}

LeetCode-101-对称二叉树
https://excelius.xyz/leetcode-101-对称二叉树/
作者
Ther
发布于
2024年7月24日
许可协议