lc-go/solutions/1/q199/solution.go
2025-12-24 18:51:27 +09:00

37 lines
647 B
Go

package q199
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func rightSideView(root *TreeNode) []int {
ret := []int{}
type qElem struct {
height int
node *TreeNode
}
queue := []qElem{{0, root}}
var last *qElem
for ; len(queue) > 0; queue = queue[1:] {
cur := &queue[0]
if cur.node == nil {
continue
}
if last != nil && last.height < cur.height {
ret = append(ret, last.node.Val)
}
last = cur
queue = append(queue, qElem{cur.height + 1, cur.node.Left}, qElem{cur.height + 1, cur.node.Right})
}
if last != nil {
ret = append(ret, last.node.Val)
}
return ret
}
var _ = rightSideView