给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:true
示例 2:
输入:root = [1,2,2,3,3,null,null,4,4]
输出:false
示例 3:
输入:root = []
输出:true
提示:
树中的节点数在范围 [0, 5000] 内
-104 <= Node.val <= 104
class Solution {
public boolean isBalanced(TreeNode root) {
if(root==null) return true;
if(Math.abs(maxDepth(root.left)-maxDepth(root.right))>1) return false;
return isBalanced(root.right)&&isBalanced(root.left);
}
public int maxDepth(TreeNode root) {
if(root==null) return 0;
return 1+Math.max(maxDepth(root.left),maxDepth(root.right));
}
}
这篇博客探讨了如何判断一棵二叉树是否是高度平衡的,定义为每个节点的左右子树高度差的绝对值不超过1。提供了一个Java解决方案,包括`isBalanced`和`maxDepth`两个方法,用于递归检查树的平衡性和计算最大深度。示例展示了不同情况下树的平衡状态,并给出了有效的输入和输出示例。

3万+

被折叠的 条评论
为什么被折叠?



