给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <---
- BFS
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func rightSideView(root *TreeNode) []int {
res := []int{}
if root == nil {
return res
}
queue := []*TreeNode{root}
res = []int{root.Val}
for len(queue) > 0 {
l := len(queue)
flag := 0
for i := 0; i < l; i++ {
node := queue[i]
if node.Right != nil {
if flag == 0 {
flag = node.Right.Val
}
queue = append(queue, node.Right)
}
if node.Left != nil {
if flag == 0 {
flag = node.Left.Val
}
queue = append(queue, node.Left)
}
}
if flag != 0 {
res = append(res, flag)
}
queue = queue[l:]
}
return res
}