平衡二叉树的含义是所有节点形成的树,左右高度差小于1
二叉树的问题好多都可以使用递归进行实现,判断二叉树是否为平衡二叉树,就判断他左子树是不是,右子树是不是。
主要是考虑他所有的情况
1.左子树不是平衡树
2.右子树不是平衡树
3.左右都是 合起来不是
4.是平衡树
将可能性分析出来,就很容易得出结果了
public static int Banlacne(TreeNodes node) {
if (node == null) {
return 0;
}
int left_High = Banlacne(node.left);
if (left_High < 0) {
return -1;
}
int right_High = Banlacne(node.right);
if (right_High < 0) {
return -1;
}
if (Math.abs(left_High - right_High) > 1) {
return -1;
}
return Math.abs(left_High - right_High)+1;
}