• 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
    
    
    
     
  • 相关阅读:
    ElasticSearch 分词器
    ElasticSearch 搜索引擎概念简介
    Kibana,Logstash 和 Cerebro 的安装运行
    ElasticSearch 安装与运行
    ElasticSearch 入门简介
    SVM 支持向量机算法-实战篇
    SVM 支持向量机算法-原理篇
    nginx 访问限速
    nginx 开启 autoindex
    nginx 开启 gzip 压缩
  • 原文地址:https://www.cnblogs.com/liushoudong/p/13622219.html
Copyright © 2020-2023  润新知