101.对称二叉树
给你一个二叉树的根节点 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
方法思路
- 递归终止条件:
- 如果两个节点都为空,说明对称
- 如果一个节点为空一个节点不为空,说明不对称
- 递归比较:
- 当前节点的值必须相等
- 左子树的左节点和右子树的右节点必须对称
- 左子树的右节点和右子树的左节点必须对称
解决代码
java">/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public boolean isSymmetric(TreeNode root) {if(root == null){return true;}return checkSymmetric(root.left, root.right);}private boolean checkSymmetric(TreeNode left, TreeNode right){if(left == null && right == null){return true;}if(left == null || right == null){return false;}return (left.val == right.val) && checkSymmetric(left.left, right.right) && checkSymmetric(left.right, right.left);}
}
代码解释
-
isSymmetric方法:
-
如果根节点为空,直接返回
true
。 -
调用辅助函数
checkSymmetric
检查左右子树是否对称。
-
-
checkSymmetric方法:
-
终止条件:若左右节点均为空,对称;若只有一个为空,不对称。
-
递归比较:比较当前节点值是否相等,并递归检查左子树的左节点与右子树的右节点,以及左子树的右节点与右子树的左节点是否对称。
-