平衡二叉树就是对每一个节点而言,高度差在1以内(包括1)。所以我们只需要求得每棵子树高度,然后判断是否合理即可。
//树节点类
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
//判断一棵树是否是平衡二叉树
public boolean isBalanced(TreeNode root) {
//根节点为空,当前树为平衡二叉树
if(root==null)
return true;
return Math.abs(getHigh(root.left)-getHigh(root.right))<2
&&isBalanced(root.left)&&isBalanced(root.right);
}
//获取一棵树的高度
public int getHigh(TreeNode root){
if(root==null){
return 0;
}
return 1+Math.max(getHigh(root.left), getHigh(root.right));
}