啥是平衡二叉树?
树的根节点,左右子树高度相差不超过1
如何判断
1 当前节点的左右节点如果是平衡二叉树,并且两个节点高度相差不超过1 那么当前节点也是平衡二叉树
2 如果左右节点任意一个不是平衡二叉树,说明当前节点也不是平衡二叉树
Node节点关键值:
1 当前节点是不是平衡二叉树
2 当前节点树的深度
代码
package 算法.二叉树;
public class test2 {
/**
* 树节点
*/
public static class Node {
//1 当前节点是否是平衡二叉树
public boolean flag;
//2 当前节点高度
public int high;
public int num;
public Node left;
public Node right;
public Node(boolean flag, int high) {
this.flag = flag;
this.high = high;
}
}
public static Node process(Node node){
if (node == null) {
return new Node(true,0);
}
Node l = process(node.left);
Node r = process(node.right);
// 1 判断是否是平衡二叉树
node.flag = false;
//如果两个子树都是平衡二叉树 并且相差小鱼等一 1 说明是平衡二叉树
if (l.flag&&r.flag&&Math.abs(l.num- r.num)<=1) {
node.flag = true;
}
// 2 计算高度
node.high = Math.max(l.high, r.high)+1;
return node;
}
public static void main(String[] args) {
process(null);
}
}