平衡二叉树
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
题目解析
题目要求判断一棵树是否是平衡二叉树,首先我们需要了解平衡二叉树的数据结构如下,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。所以我们可以使用递归方式去得到左右子树的高度如下
代码
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
//它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
if(root == null){
return true;
}
return Math.abs(getDepth(root.left) - getDepth(root.right)) <= 1 && IsBalanced_Solution(root.left) &&
IsBalanced_Solution(root.right);
}
//得到树的深度
private int getDepth(TreeNode root){
if(root == null){
return 0;
}
return 1 + Math.max(getDepth(root.left),getDepth(root.right));
}
}