平衡二叉树
平衡二叉树的定义是每个节点的左子树和右子树高度相差不超过一
当有一个节点,不是平衡二叉树那么这个节点就不是平衡二叉树
package zuochengyun;
public class Code9BlanceTree {
/*
* 二叉树节点
*/
public static class Node{
private int value;
private Node Left;
private Node Right;
public Node(int value) {
this.value = value;
}
}
/*
* 定义一个结构
*/
public static class IsB{
private boolean isBT;
private int h;
public IsB(boolean isBT, int h) {
this.isBT = isBT;
this.h = h;
}
}
public static IsB searchBlance(Node T) {
if(T==null)
return new IsB(true, 0);
IsB IsbLeft=searchBlance(T.Left);
if(IsbLeft.isBT==false) {
return new IsB(false, 0);
}
IsB IsbRight=searchBlance(T.Right);
if(IsbRight.isBT==false) {
return new IsB(false, 0);
}
//若果两个子树高度相差大于1?
if(Math.abs(IsbLeft.h-IsbRight.h)>1)
return new IsB(false, 0);
return new IsB(true, Math.max(IsbLeft.h, IsbRight.h)+1);
}
public static void main(String[] args) {
Node head = new Node(1);
head.Left = new Node(2);
head.Right = new Node(3);
head.Left.Left = new Node(4);
head.Left.Right = new Node(5);
head.Right.Left = new Node(6);
head.Right.Right = new Node(7);
System.out.println(searchBlance(head).isBT);
}
}