Дан корень бинарного дерева. Представьте, что вы стоите справа от дерева и
смотрите на него. Верните значения узлов, которые вы видите, сверху вниз — то
есть самый правый узел каждого уровня.
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
// RightSideView возвращает самый правый узел каждого уровня, сверху вниз.
func RightSideView(root *TreeNode) []int
Примеры
1
/ \
2 3 → [1, 3, 4]
\ \
5 4
1
/ \
2 3 → [1, 3, 4] (на третьем уровне виден левый узел 4:
/ справа от него никого нет)
4
nil → []
Ограничения
- В дереве
0 … 10⁶ узлов, значения — любые int (возможны повторы).
- Дерево может быть вырожденным — глубиной до
10⁵.
- Дерево менять нельзя. Ожидается O(n) по времени.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.