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));
}
}