**有一棵二叉树,请设计一个算法判断这棵二叉树是否为平衡二叉树。
给定二叉树的根结点root,请返回一个bool值,代表这棵树是否为平衡二叉树。**
import java.util.*;
/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }*/
public class CheckBalance {
public static boolean check(TreeNode root){
return chk(root)>=0;
}
private static int chk(TreeNode root) {
if (root==null) return 0;
int l=chk(root.left),r=chk(root.right);//左右两边深度
if (l<0||r<0) return -1;
if ((Math.abs(r-l)>1))return -1;//当左右两边深度差超过1时 返回-1
return r>l?r+1:l+1;
}
}