zoukankan      html  css  js  c++  java
  • 32、从上到下打印二叉树

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

    例如:
    给定二叉树: [3,9,20,null,null,15,7]

    返回:[3,9,20,15,7]

    =============队列=============
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def levelOrder(self, root: TreeNode) -> List[int]:
            if not root:
                return []
            from collections import deque
            q = deque()
            q.append(root)
            res = []
            while q:
                cur = q.popleft()
                res.append(cur.val)
                if cur.left:
                    q.append(cur.left)
                if cur.right:
                    q.append(cur.right)
            return res

    从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

    例如:
    给定二叉树: [3,9,20,null,null,15,7],

    返回其层次遍历结果:

    [
      [3],
      [9,20],
      [15,7]
    ]
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def levelOrder(self, root: TreeNode) -> List[List[int]]:
            if not root:
                return []
            from collections import deque
            q = deque()
            q.append(root)
            ans = []
            while q:
                tmp = deque()
                res = []
                while q:
                    cur = q.popleft()
                    res.append(cur.val)
                    if cur.left:
                        tmp.append(cur.left)
                    if cur.right:
                        tmp.append(cur.right)
                q = tmp
                ans.append(res)
            return ans
    
    

    请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

    例如:
    给定二叉树: [3,9,20,null,null,15,7],

    返回其层次遍历结果:

    
    
    [
      [3],
      [20,9],
      [15,7]
    ]
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def levelOrder(self, root: TreeNode) -> List[List[int]]:
            if not root:
                return []
            from collections import deque
            q = deque()
            q.append(root)
            ans = []
            flag = 1
            while q:
                tmp = deque()
                res = []
                while q:
                    cur = q.popleft()
                    res.append(cur.val)
                    if cur.left:
                        tmp.append(cur.left)
                    if cur.right:
                        tmp.append(cur.right)
                q = tmp
                if flag == 1:
                    ans.append(res)
                else:
                    ans.append(res[::-1])
                flag = -flag
    
            return ans
    
    
    
     
  • 相关阅读:
    带宽利用率提升50%,腾讯云联网架构方案解析
    重构实践:基于腾讯云Elasticsearch搭建QQ邮箱全文检索
    存算分离下写性能提升10倍以上,EMR Spark引擎是如何做到的?
    秒级去重:ClickHouse在腾讯海量游戏营销活动分析中的应用
    降本提效,贝壳搜索推荐架构统一之路
    亿级用户,腾讯看点信息流推荐系统的架构挑战
    优秀程序员,如何提高架构能力?
    如何创建体元栅格?
    导出属性表字段结构
    去除镶嵌数据集中影像的黑边或白边
  • 原文地址:https://www.cnblogs.com/liushoudong/p/13622219.html
Copyright © 2011-2022 走看看