T101. Symmetric Tree【Easy】
题目
给一个二叉树,确认这个是不是自己的镜像(即围绕其中心对称)
例如,下面这个二叉树 [1,2,2,3,4,4,3] 是对称的:
1
/ \
2 2
/ \ / \
3 4 4 3
但是 [1,2,2,null,3,null,3]
1
/ \
2 2
\ \
3 3
注意: 如果用递归和迭代解决更好
思路
递归向下遍历,如果有错返回 false,如果没有就返回 true.
代码
代码取自 Top Solution,稍作注释
public boolean isSymmetric(TreeNode root) {
boolean b=true;
if (root==null) return true;
b=isSymmetric(root.left, root.right);
return b;
}
boolean isSymmetric(TreeNode left, TreeNode right) {
if (left==null && right==null) return true;
// 若不对称,则返回 false
if (left ==null|| right==null) return false;
// 比较左右节点以及左右节点的两个节点是否对称,然后返回
return left.val == right.val && isSymmetric(left.left, right.right)&& isSymmetric(left.right, right.left);
}