leetcode-二叉树的右视图

106 阅读1分钟

广度优先搜索

/**
 * 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
}