题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
递归入口,被遍历节点的左右节点;
处理情况:左右只有一个空--false;左右都不空--比较值;左右都空--true
public class 对称的二叉树 {
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
boolean isSymmetrical(TreeNode pRoot)
{
if (pRoot==null) {
return true;
}
return mirror(pRoot.left,pRoot.right);
}
/*同一个节点的左右子树*/
private boolean mirror(TreeNode left, TreeNode right) {
/*左子树和右子树是否为空*/
if (left==null) {
return right==null;
}
if (right==null) {
return false;
}
if (left.val!=right.val) {
return false;
}
return mirror(left.left, right.right)&&mirror(left.right, right.left);
}
}