判断是否是平衡二叉树(左子树与右子树高度不大于1)

package com.hzins.suanfa;
/**
 * 判断是否是平衡二叉树(左子树与右子树高度不大于1)
 * 
 * @author Administrator
 *
 */
public class BalancedTree {
    /**
     * level一开始必须为0 当head到递归栈底时,发现自己是null,此时算层数,得从上面算,(自己是null,不算)
     * @param head
     * @param level
     * @return
     */
    public static int getHeight(Node head, int level){
        if(head == null){
            return level;
        }
        int lh = getHeight(head.left, level + 1);
        int rh = getHeight(head.right, level + 1);
        if(lh == -1 || rh == -1 || Math.abs(lh - rh) > -1){
            return -1;
        }
        return Math.max(lh, rh);
    }
    public static boolean isBalance(Node head){
        return getHeight(head, 0) != -1;
    }
    public static void main(String[] args) {
        Node node = new Node(1);
        Node node1 = new Node(2);
        Node node2 = new Node(3);
        Node node3 = new Node(4);
        Node node4 = new Node(5);
        Node node5 = new Node(6);
        Node node6 = new Node(7);
        node.left = node1;
        node.right = node2;
        node1.left = node3;
        node1.right = node4;
        node2.left = node5;
        node2.right = node6;
        System.out.println(isBalance(node));
    }
}
原文地址:https://www.cnblogs.com/caobojia/p/6767157.html