二叉树的右视图
给定一个二叉树的 根节点
root
,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例 1:
输入: [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
}