题目
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树*每个节点 *的左右两个子树的高度差的绝对值不超过 1 。
解题思路
需要对每个节点都要判断其左孩子的高度与右孩子的高度,用递归去判断每个点左孩子和有孩子的高度差是否大于 1
,至于得到高度也可以用递归。
代码
class Solution {
public boolean isBalanced(TreeNode root) {
if (root == null) return true;
if (Math.abs(getDeep(root.left) - getDeep(root.right)) > 1) return false;
return isBalanced(root.left) && isBalanced(root.right);
}
private int getDeep(TreeNode p) {
if (p == null) return 0;
return Math.max(getDeep(p.left), getDeep(p.right)) + 1;
}
}