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

按之字形顺序打印二叉树

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

# 解题思路
使用双端队列,奇数行打印的时候从左侧弹出,然后按照(节点左子,节点右子)append到队列;第二行打印的时候从右侧弹出,然后按照(节点右子,节点左子)的顺序appendleft到队列,可以写两段连续的代码,也可以通过设置level判断是奇数行还是偶数行
# 草稿内容


# 代码实现
import collections

class Solution:
    def Print(self , pRoot: TreeNode) -> List[List[int]]:
        # write code here
        if not pRoot: return []
        res = []
        deque = collections.deque()
        deque.append(pRoot)
        level = 0
        while deque:
            path = []
            for _ in range(len(deque)):
                if level % 2 == 0:
                    node = deque.popleft()
                    path.append(node.val)
                    if node.left: deque.append(node.left)
                    if node.right: deque.append(node.right)
                else:
                    node = deque.pop()
                    path.append(node.val)
                    if node.right: deque.appendleft(node.right)
                    if node.left: deque.appendleft(node.left)    
            res.append(list(path))
            level += 1

        return res
全部评论

相关推荐

墨西哥大灰狼:如果你的校友卤馆还在的话,他肯定会给你建议的,可是卤馆注销了@ 程序员卤馆
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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