package BinaryTree
// 时间复杂度: O(n), 空间复杂度: O(n)
func rightSideView(root *TreeNode) []int {
result := make([]int, 0)
if root == nil {
return result
}
q := new(TreeNodeQueue)
q.Enqueue(root)
for !q.IsEmpty() {
curLevelSize := q.Size()
for i := 0; i < curLevelSize; i++ {
cur := q.Dequeue()
if i == 0 {
result = append(result, cur.Val)
}
if cur.Right != nil {
q.Enqueue(cur.Right)
}
if cur.Left != nil {
q.Enqueue(cur.Left)
}
}
}
return result
}