- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
//无需对每个节点都计算其高度,使用一点技巧进行了,如果非平衡的话返回-1,这样上册节点就直到下层的节点是非平衡的了,代码如下所示:
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if (checkBalanced(root) == -1)
return false;
return true;
}
int checkBalanced(TreeNode root) {
if (root == null)
return 0;
int leftHeight = checkBalanced(root.left);
int rightHeight = checkBalanced(root.right);
if (leftHeight == -1 || rightHeight == -1)
return -1;
else if (Math.abs(leftHeight - rightHeight) > 1)
return -1;
else
return Math.max(leftHeight, rightHeight) + 1;
}
}