刷題系列 - Python實現二叉樹按層級遍歷
繼續刷題,刷題果然會上癮。
Python實現二叉樹按層級遍歷,看起來有點複雜。如下圖,如果一個二叉樹有多層,則從上到下,每層按從左到右遍歷。
每層放在一個佇列,整體返回一個多組佇列的佇列。
看起來複雜,其實實現反而很簡單;不用棧,就用一個節點佇列放當前層級節點,遍歷當前層級節點,讀取值放入一個讀取佇列,讀取當前節點的子節點放入另一個佇列;噹噹前佇列節點遍歷完成後,使用下一層節點對用,相當於進入下一層,遍歷剛剛生成子節點佇列,如此反覆直到節點佇列為空結束。
程式碼如下
# 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]]: traversalList = [] nodeList = [] if root != None: nodeList.append(root) while nodeList != []: currentLevelVal = [] currentNodeList = [] for node in nodeList: currentLevelVal.append(node.val) if node.left != None: currentNodeList.append(node.left) if node.right != None: currentNodeList.append(node.right) traversalList.append(currentLevelVal) nodeList = currentNodeList return traversalList
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2673802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 刷題系列 - Python用非遞迴實現二叉樹前序遍歷Python遞迴二叉樹
- 刷題系列 - Python用非遞迴實現二叉樹後續遍歷Python遞迴二叉樹
- 刷題系列 - Python用非遞迴實現二叉樹中序遍歷Python遞迴二叉樹
- 二叉樹的按層遍歷二叉樹
- Leetcode 演算法題解系列 - 二叉樹的層序遍歷LeetCode演算法二叉樹
- 二叉樹的遍歷實現二叉樹
- 刷題系列 - Python用遞迴實現求二叉樹深度Python遞迴二叉樹
- 二叉樹的層序遍歷二叉樹
- python-二叉樹:前、中、後、層序遍歷Python二叉樹
- Python實現二叉樹的三種深度遍歷方法!Python二叉樹
- 刷題系列 - 中序和後序遍歷佇列,構造對應二叉樹;佇列二叉樹
- python 實現二叉樹的深度&&廣度優先遍歷Python二叉樹
- [LintCode]BinaryTreeLevelOrderTraversal(二叉樹的層次遍歷)二叉樹
- 二叉樹實現按層 s型列印二叉樹
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- 刷題系列 - 給出前序和後序遍歷佇列,構造對應二叉樹佇列二叉樹
- 二叉樹遍歷二叉樹
- 二叉樹---遍歷二叉樹
- [Leetcode]102.二叉樹的層次遍歷LeetCode二叉樹
- LeetCode102.二叉樹的層序遍歷LeetCode二叉樹
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- 採用層次遍歷判斷二叉樹為完全二叉樹二叉樹
- 二叉樹的建立與遍歷(遞迴實現)二叉樹遞迴
- 二叉樹的所有遍歷非遞迴實現二叉樹遞迴
- 通過層次遍歷計算二叉樹的層數二叉樹
- 層序遍歷樹的節點,佇列實現佇列
- LeetCode-107-二叉樹的層序遍歷 IILeetCode二叉樹
- 二叉樹遍歷方法二叉樹
- 二叉樹的遍歷二叉樹
- 二叉樹遍歷 -- JAVA二叉樹Java
- 力扣工作周刷題 - 94. 二叉樹的中序遍歷力扣二叉樹
- C++樹——遍歷二叉樹C++二叉樹
- 樹的層次遍歷
- python實現二叉樹及其七種遍歷方式(遞迴+非遞迴)Python二叉樹遞迴
- 刷題系列 - Python判斷是否映象對稱二叉樹Python二叉樹
- 144. 二叉樹的前序遍歷(java實現)--LeetCode二叉樹JavaLeetCode
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹