Skip to main content

二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例 1:

img

输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

一眼层序遍历

func rightSideView(root *TreeNode) []int {
if root == nil {
return nil
}
res := []int{root.Val}
stack := list.New() // bfs 的 stack
stack.PushBack(root)

for stack.Len() != 0 {
stackLen := stack.Len()
for i := 0; i < stackLen; i++ {
p := stack.Remove(stack.Front()).(*TreeNode) // 先进先出
if p.Left != nil {
stack.PushBack(p.Left)
}
if p.Right != nil {
stack.PushBack(p.Right)
}
}
if stack.Len() > 0 {
res = append(res, stack.Back().Value.(*TreeNode).Val)
}
}
return res
}