题目:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题思路:
首先设置一个函数用来判断树的高度,有了这个函数,我们就可以用来判断二叉树某一个分支的高度。接下来需要了解的是平衡二叉树即对于任意一个节点来说,起左右子树的高度差的绝对值小于等于1,我们可以用上面的函数判断左右子树的高度,如果高度差大于1则返回false,否则递归地判断左右子树。
代码:
public boolean IsBalanced(TreeNode root) {
if (root == null) {
return true;
}
int left = TreeDepth(root.left);
int right = TreeDepth(root.right);
if (Math.abs(left - right) > 1) {
return false;
}
return isBalanced(root.left) && isBalanced(root.right);
}
private int TreeDepth(TreeNode root) {
if (root == null) {
return 0;
}
int left = TreeDepth(root.left);
int right = TreeDepth(root.right);
return left > right? left+1 : right+1;
}
-----------EOF-----------