【leetcode】102:二叉樹的層序遍歷
阿新 • • 發佈:2021-10-11
這個題目比較基礎,可以對樹的廣度優先搜尋的模版稍作更改,就可以得到我們的答案了。題目如下:
解答如下:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]:if not root: return [] #跟結點入queue queue = [root] res = [] while queue: res.append([node.val for node in queue]) #儲存當前層的孩子節點列表 ll = [] #對當前層的每個節點遍歷 for node in queue: #如果左子節點存在,入佇列 ifnode.left: ll.append(node.left) #如果右子節點存在,入佇列 if node.right: ll.append(node.right) #後把queue更新成下一層的結點,繼續遍歷下一層 queue = ll return res
方法二:
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]:if not root: return [] res = [] queue = [root] while queue: tmp = [] for _ in range(len(queue)): node = queue.pop(0) tmp.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) res.append(tmp) return res
對二叉樹層序遍歷的模版如下:
def BFS(root): if root: res = [] queue = [root] while queue: currentNode = queue.pop(0) res.append(currentNode.val) if currentNode.left: queue.append(currentNode.left) if currentNode.right: queue.append(currentNode.right) return res