题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
我们只需要算出左右子树的深度,看一下差值是否大于1就可以了
计算二叉树的深度的方法如下:
public static int getTreeDepth(TreeNode root){
if(root == null){
return 0;
}
int left = getTreeDepth(root.left);
int right = getTreeDepth(root.right);
return left > right ? left + 1 : right + 1;
}
分别对左右子树调用上面的方法计算深度,比较即可,完整代码如下:
import java.lang.Math;
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if(root == null){
return true;
}
if (Math.abs(getTreeDepth(root.left) - getTreeDepth(root.right)) > 1){
return false;
}
return true;
}
public static int getTreeDepth(TreeNode root){
if(root == null){
return 0;
}
int left = getTreeDepth(root.left);
int right = getTreeDepth(root.right);
return left > right ? left + 1 : right + 1;
}
}