题目:
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
知识点:
递归。
思路:
1、若果根节点为null,返回true。
2、遍历根节点的左节点和有节点:
1)左节点为null,返回判断右节点是否为null;
2)右节点为null,返回false;
3)判断左右结点值是否相同,不同返回false;
递归遍历:判断右节点的右节点和左节点的左节点&&判断右节点的左节点和左节点的右节点。(镜像对称才是对称)
答案:
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
boolean isSymmetrical(TreeNode pRoot)
{
if(pRoot==null){return true;}
return Judge(pRoot.right,pRoot.left);
}
public boolean Judge(TreeNode right,TreeNode left){
if(left==null){return right==null;}
if(right==null){return false;}
if(left.val!=right.val){return false;}
return Judge(right.right,left.left)&&Judge(right.left,left.right);
}
}