1. 程式人生 > 其它 >【leetcode】102:二叉樹的層序遍歷

【leetcode】102:二叉樹的層序遍歷

這個題目比較基礎,可以對樹的廣度優先搜尋的模版稍作更改,就可以得到我們的答案了。題目如下:

解答如下:

# 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: #如果左子節點存在,入佇列 if
node.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