Menu
CoddyTech

Balanced Binary Tree

数组 root 表示一棵二叉树。根节点位于索引 0,索引 i 的子节点位于 2*i+1(左侧)和 2*i+2(右侧),-1 表示空位置,末尾可能会有多余的 -1 项。

如果这棵树是高度平衡的,则返回 true,否则返回 false。高度平衡是指每个节点的左子树和右子树的高度之差最多为 1。子树的高度是其最长向下路径上的节点数;空子树的高度为 0。

函数

isBalanced(root: integer-array) → boolean
rootinteger-array
二叉树的层序遍历,空位用 -1 表示
返回值boolean
如果每个节点的两个子树高度之差都不超过 1,则为 true,否则为 false

约束条件

  • 1 ≤ root.length ≤ 32767
  • 每个 root[i] 都是 -1,或是满足 0 ≤ root[i] ≤ 105 的值。
  • root[0] 永远不会是 -1,因此树至少有一个节点。
  • 数组末尾可能会在最后一个节点之后包含额外的 -1 项。
  • 空位置的两个子节点也都是空的,并且深度最多为 14。
  • 节点的值各不相同。

示例

输入
root = [5, 2, 9, -1, -1, 7, 11]
输出
true
解释
根节点的左子树只有一个节点 2,高度为 1。它的右子树由 9、7、11 组成,高度为 2。它们的高度相差 1,其他每个节点的两棵子树高度都相等。
challenge icon

进阶

你能使用显式栈,在不使用递归的情况下检查这棵树吗?

重置代码
def isBalanced(root):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

root = [5, 2, 9, -1, -1, 7, 11]

预期输出

true