题解 | #二叉树程序遍历 ii# 分层遍历+结果翻转

二叉树程序遍历 ii

http://www.nowcoder.com/practice/d8566e765c8142b78438c133822b5118

先分层遍历,再对结果进行翻转

func levelOrderBottom( root *TreeNode ) [][]int {
    // write code here
    if root == nil {
        return nil
    }

    ret := make([][]int, 0)
    stack := []*TreeNode{root}

//  先分层遍历
    for len(stack) >0 {
        size := len(stack)
        tmp := make([]int, 0, size)
        for i:=0; i< size; i++{
            node := stack[i]
            tmp = append(tmp, node.Val)

            if node.Left != nil {
                stack = append(stack, node.Left)
            }
            if node.Right != nil {
                stack = append(stack, node.Right)
            }
        }
        stack = stack[size:]

        ret = append(ret, tmp)
    }

//  最后对结果进行翻转
    if len(ret) > 0 {
        for i, j := 0, len(ret)-1; i<j; i,j = i+1, j-1 {
            ret[i], ret[j] = ret[j], ret[i]
        }
    }

    return ret
}
全部评论

相关推荐

野猪不是猪🐗:把你的学校加黑,加粗,斜体,下划线,描边,内阴影,内发光,投影,外发光,再上渐变色,居中,放大到最大字号,再把简历里其它内容删了,就行了
点赞 评论 收藏
分享
剑桥断刀:找啥工作,牛客找个比如大厂软开或者随便啥的高薪牛马,大把没碰过妹子的技术仔,狠狠拿捏爆金币
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务