面试题28:对称的二叉树

2019-10-07  本文已影响0人  scott_alpha

题目:请实现一个函数,用来判断一个二叉树是不是对称的。如果一颗二叉树和它的镜像一样,那么它是对称的。
思路:用前序遍历和前序遍历的镜像做比较,如果都一样则对称
解决方案:

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));
    }
}
上一篇 下一篇

猜你喜欢

热点阅读