对称二叉树
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
思路:
只要抓住 “左节点的右子树和右节点的左子树对称以及左节点的左子树和右节点的右子树对称 那么这两个节点就是对称的”这个思路就好。
递归代码:
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root.left==null&&root.right==null){
return true;
}
return isSymmetricForTwo(root.left,root.right);
}
public boolean isSymmetricForTwo(TreeNode rootA,TreeNode rootB){
if(rootA==null&&rootB==null){return true;}
if(rootA==null||rootB==null){return false;}
if(rootA.val==rootB.val){
return isSymmetricForTwo(rootA.left,rootB.right)&&isSymmetricForTwo(rootA.right,rootB.left);
}
return false;
}
}