1. 程式人生 > 實用技巧 >32、從上到下列印二叉樹

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