Menu
CoddyTech

Binary Tree Right Side View

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

从右侧观察这棵树。每一层你只能看到一个节点,就是最右侧的那个节点,其余节点都被挡住了。从根节点所在层开始,到最深的一层为止,按顺序列出这些节点的值。

函数

rightSideView(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, 7, 4, -1, 1, -1, 3]
输出
[5, 9, 1, 3]
解释
从右侧可以看到 5、9 和 1(索引 6)。第四层只有 3,它位于左子树中 7 下方的索引 8 处。右侧没有节点到达那么深,所以可以看到 3。
challenge icon

进阶

如何获取一棵树的右视图?树中的每个节点可以有任意数量的子节点,并按从左到右的顺序存储在列表中。

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

测试 #1

测试 #2

测试 #3

参数

root = [5, 2, 9, 7, 4, -1, 1, -1, 3]

预期输出

[5, 9, 1, 3]