请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
思路:主要先判断根节点下面的两个左右子节点是否相等,然后再用递归判断左子树的左孩子和右子树的右孩子是否相等,还有左子树的右孩子和右子树的左孩子是否相等,如果在递归的过程中并不满足则返回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;
boolean p = pd(pRoot.left,pRoot.right);
return p;
}
public static boolean pd(TreeNode t1,TreeNode t2){
if(t1 == null) return (t2 == null);
if(t2 == null) return false;
if(t1.val != t2.val) return false;
return pd(t1.left,t2.right) && pd(t1.right,t2.left);
}
}