Leetcode专题-199-二叉树的右视图

leetcode链接:
https://leetcode.cn/problems/binary-tree-right-side-view/desc...
解题思路:
层序遍历后取每一层的最后一个值

func rightSideView(root *TreeNode) []int {
    res := [][]int{}
    sideView := []int{}
    if root == nil {
        return sideView
    }
    quene := list.New()
    quene.PushBack(root)
    var tmpArr []int
    for quene.Len() > 0 {
        size := quene.Len()
        for i := 0; i < size; i++ {
            node := quene.Remove(quene.Front()).(*TreeNode)
            if node.Left != nil {
                quene.PushBack(node.Left)
            }
            if node.Right != nil {
                quene.PushBack(node.Right)
            }
            tmpArr = append(tmpArr, node.Val)
        }
        res = append(res, tmpArr)
        tmpArr = []int{}
    }
    for i := 0; i < len(res); i++ {
        sideView = append(sideView, res[i][len(res[i]) - 1])
    }
    return sideView
}

你可能感兴趣的:(go)