199.M 二叉树的右视图

Problem: 199. 二叉树的右视图

思路

层次遍历,每次找到当前层的最有一个节点,加入结果数组。

使用一个队列作为辅助,先进先出。每次出一个节点时,如果子节点不为空,则把子节点加入队列。

Code

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func rightSideView(root *TreeNode) []int {
    if root == nil {
        return nil
    }

    var res []int
    queue := []*TreeNode{root}
    for len(queue) > 0 {
        size := len(queue)
        res = append(res, queue[size-1].Val)
        for _, node := range queue {
            queue = queue[1:]
            if node.Left != nil {
                queue = append(queue, node.Left)
            }

            if node.Right != nil {
                queue = append(queue, node.Right)
            }
        }
    }
    return res
}

Last updated

Was this helpful?