题目描述
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
解题思路:
- 判断一个二叉树是不是高度平衡的二叉树,毫无疑问递归求解
- 求出左子树的深度和右子树的深度,将两者的差值作为判断的结果
代码如下:
boolean flag = true;
public boolean isBalanced(TreeNode root) {
getDepth(root);
return flag;
}
// 递归函数
public int getDepth(TreeNode root){
// 递归结束的条件
if( !flag || root == null)
return 0;
// 递归体
int left = getDepth(root.left);
int right = getDepth(root.right);
// 判断结果
if(Math.max(left,right) - Math.min(left,right) > 1){
flag = false;
}
// 返回子树的深度
return 1 + Math.max(left,right);
}