1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| func rightSideView(root *TreeNode) []int { var res []int if root == nil { return res } var levels [][]int var queue []*TreeNode queue = append(queue, root)
for len(queue) > 0 { size, level := len(queue), make([]int, 0) for i := 0; i < size; i++ { node := queue[0] queue = queue[1:] level = append(level, node.Val) if node.Left != nil { queue = append(queue, node.Left) } if node.Right != nil { queue = append(queue, node.Right) } } levels = append(levels, level) } for _, level := range levels { res = append(res, level[len(level)-1]) } return res }
|