题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

package main
import . "nc_tools"

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

    queue := []*TreeNode{pRoot}
    levels := [][]int{}

    for len(queue) > 0 {
        n := len(queue)
        level := []int{}

        for i := 0; i < n; i++ {
            pRoot = queue[0]
            queue = queue[1:]

            level = append(level, pRoot.Val)
            if pRoot.Left != nil {
                queue = append(queue, pRoot.Left)
            }
            if pRoot.Right != nil {
                queue = append(queue, pRoot.Right)
            }
        }

        k1 := len(level)                    //这里注意,内层【】,翻转的都是这里面的
        k2 := len(levels)                   //这里也要注意,外层【】,只有判断奇偶的时候用
        if k2 % 2 == 1 {
            for i := 0; i < k1/2; i++ {
                level[i], level[k1-1-i] = level[k1-1-i], level[i]
            }
        }
        levels = append(levels, level)
    }
    return levels
}















全部评论

相关推荐

03-26 13:44
南华大学 Java
在看面经的花生米很野蛮:这种情况下你当然要回答,你也是吗!!!!我超喜欢他的XXXXX
点赞 评论 收藏
分享
用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务