32扩展. 按之字形顺序打印二叉树

按之字形顺序打印二叉树

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

  • 层序遍历
  • nextlevel记录下层的节点数
  • tobeprint记录本层还有几个节点未打印,当其为0时,本层打印结束,重置其为nextlevel数量,而nextlevel更新为0
  • levelnums记录现在是第几层,从而判断是从左向右打印还是相反
class Solution:
    def Print(self, pRoot):
        # write code here
        if not pRoot:return ''
        queue = [pRoot]
        helper = []
        tobeprint = 1
        nextlevel = 0
        res = []
        levelnums = 0
        while queue:
            if queue[0].left:
                queue.append(queue[0].left)
                nextlevel += 1
            if queue[0].right:
                queue.append(queue[0].right)
                nextlevel += 1
            tobeprint -= 1
            helper.append(queue[0].val)
            queue.pop(0)
            if tobeprint == 0:
                levelnums += 1 
                if levelnums % 2 == 1:
                    res.append(helper) 
                else :
                    helper = helper[::-1]
                    res.append(helper)
                helper = []
                tobeprint = nextlevel
                nextlevel = 0
        return res
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 12:05
俺不中了,BOSS遇到了一个hr,我觉得我咨询的问题都很正常吧,然后直接就被拒绝了???
恶龙战士:你问的太多了,要不就整理成一段话直接问他,一个一个问不太好
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务