Menu
CoddyTech

Binary Tree Level Order Traversal

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

按层返回节点值:每层一个列表,从根节点向下直到最深层,每层的值按从左到右的顺序排列。

函数

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
按堆序排列的树,空位用 -1 表示
返回值integer-2d-array
每个层级对应一个值列表,先顶层,再从左到右依次排列

约束条件

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

示例

输入
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
输出
[[4], [9, 2], [6, 8, 5], [3]]
解释
索引 3 为空,所以 9 只有一个右子节点 6。第三层是 6、8、5,位于索引 9、在 6 下方的 3 独自处于第四层。
challenge icon

进阶

你能按之字形顺序返回各层吗?第一层从左到右,第二层从右到左,以此类推,不对任何一层排序。

重置代码
def levelOrder(tree):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]

预期输出

[[4], [9, 2], [6, 8, 5], [3]]