给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
解题思路:
1.定义一个boolean的全局变量记录结果真/假
2.递归的左右子树,并且看左右子树差值是大于1,改变全局变量值,返回最高深度
3.最后看全局变量值
//每个节点的左右两个子树的高度差绝对值不超过1
class Solution {
private boolean result = true;
public boolean isBalanced(TreeNode root) {
maxDepth(root);
return result;
}
public int maxDepth(TreeNode root) {
if (root == null) return 0;
int l = maxDepth(root.left);
int r = maxDepth(root.right);
//左右子树的大于1。
if (Math.abs(l - r) > 1) result = false;
//返回深度
return 1 + Math.max(l, r);
}
}