广度优先搜索
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func rightSideView(root *TreeNode) []int {
ret := []int{}
if root == nil {
return ret
}
p := make([]*TreeNode, 0)
q := make([]*TreeNode, 0)
p = append(p, root)
for len(p) > 0 {
for len(p) > 0 {
if len(p) == 1 {
ret = append(ret, p[0].Val)
}
if p[0].Left != nil {
q = append(q, p[0].Left)
}
if p[0].Right != nil {
q = append(q, p[0].Right)
}
p = p[1:]
}
p = q
q = []*TreeNode{}
}
return ret
}