Menu
CoddyTech

Bottom View of Binary Tree

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

根节点位于第 0 列;向左走一步,列号减一,向右走一步,列号加一。从下方观察时,每列显示最深的节点;如果深度相同,则显示该层从左到右最后出现的节点(索引较大的节点)。返回你看到的值,按列从最左侧开始排列。

函数

bottomView(root: integer-array) → integer-array
rootinteger-array
树按堆顺序排列,空位用 -1 表示
返回值integer-array
从下方看到的每一列的值,从最左侧的列开始

约束条件

  • 1 ≤ root.length ≤ 32767
  • 每个 root[i] 都是 -1,或者是满足 0 ≤ root[i] ≤ 104 的值,并且没有重复值。
  • root[0] 永远不会是 -1,因此这棵树至少有一个节点。
  • 数组的末尾可能会有一些额外的 -1 项,位于最后一个节点之后。
  • 空位置的两个子节点也都是空的,而且这棵树最多有 14 层。

示例

输入
root = [5, 2, 9, 4, 7, 1, 6]
输出
[4, 2, 1, 9, 6]
解释
第 0 列存放 5,向下两层的位置存放 7(索引 4)和 1(索引 5)。1 在同一层中出现得更晚,所以会显示出来。第 -2、-1、1 和 2 列分别存放 4、2、9 和 6。
challenge icon

进阶

如果某一列最深层出现并列,应该从左到右返回所有并列的节点,那么广度优先版本需要如何修改?示例 1 的第 0 列会得到什么?

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

测试 #1

测试 #2

测试 #3

参数

root = [5, 2, 9, 4, 7, 1, 6]

预期输出

[4, 2, 1, 9, 6]