lc-go/solutions/1/q199/solution.go

38 lines
748 B
Go

// Package q199 implements a solution for https://leetcode.com/problems/binary-tree-right-side-view/
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