对称二叉树
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
public static boolean isSymmetric(TreeNode root) {
//如果根节点为空则直接返回true
if(root == null){
return true;
}
//递归判断左右子节点是否相等
return symmetric(root.left,root.right);
}
//此处的左右节点是整个树中对称的两个节点
public static boolean symmetric(TreeNode left,TreeNode right) {
//对称节点都为null则两个点为对称,返回true
if(left == null && right == null){
return true;
}
//此处两个对称节点有一个为null时,则两个节点不相等,则不对称,返回false
if(left == null || right == null){
return false;
}
//对称节点都不为null时,判断两个节点是否相等,相等则继续对子节点进行判断
if(left.val == right.val){
return symmetric(left.left,right.right) && symmetric(left.right,right.left);
}
return false;
}