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
    
    
    
     
  • 相关阅读:
    ABP源码分析四十:ZERO的Application和Tenant
    ABP源码分析三十九:ABP.Hangfire
    ABP源码分析三十八: ABP.Web.Api.OData
    ABP源码分析三十七:ABP.Web.Api Script Proxy API
    232. 用栈实现队列
    155. 最小栈
    725. 分隔链表
    328. 奇偶链表
    148. 排序链表
    143. 重排链表
  • 原文地址:https://www.cnblogs.com/liushoudong/p/13622219.html
Copyright © 2011-2022 走看看