题目:请实现一个函数,用来判断一个二叉树是不是对称的。如果一颗二叉树和它的镜像一样,那么它是对称的。
思路:用前序遍历和前序遍历的镜像做比较,如果都一样则对称
解决方案:
public class Question28 {
static class BinaryTreeNode{
double value;
BinaryTreeNode left;
BinaryTreeNode right;
public BinaryTreeNode(int value){
this.value = value;
}
}
public static boolean isSymmertrical(BinaryTreeNode root1, BinaryTreeNode root2){
if (root1 == null && root2 == null) return true;
if (root1 == null || root2 == null) return false;
if (root1.value != root2.value) return false;
return isSymmertrical(root1.left, root2.right) && isSymmertrical(root1.right, root2.left);
}
public static boolean isSymmertrical(BinaryTreeNode root){
return isSymmertrical(root, root);
}
public static void main(String[] args) {
BinaryTreeNode pHead = new BinaryTreeNode(1);
BinaryTreeNode pAhead = new BinaryTreeNode(3);
BinaryTreeNode pBhead = new BinaryTreeNode(5);
BinaryTreeNode pChead = new BinaryTreeNode(7);
pHead.left = pAhead;
pHead.right = pBhead;
pBhead.left = pChead;
System.out.println(isSymmertrical(pHead));
}
}
网友评论