LeetCode:102. 二叉樹的層次遍歷(Python 3)
阿新 • • 發佈:2019-02-08
題目:
給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。
例如:
給定二叉樹: [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回其層次遍歷結果:
[
[3],
[9,20],
[15,7]
]
解答:
這個要用佇列來實現。
1. 把根節點入佇列
2. 在一個迴圈中,先取出根節點(出佇列 + 訪問節點)
3. 把根節點的左右孩子入佇列
然而這裡不但要層次遍歷,而且要按層輸出,於是再增加一個list作為每一層的節點,正好佇列的長度就是每一層的元素個數。
# 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): """ :type root: TreeNode :rtype: List[List[int]] """ nodeQuene = [] result = [] if not root: return result nodeQuene.append(root) while nodeQuene: # 這個表示單層節點所有的值 singleLevel = [] queneLength = len(nodeQuene) for i in range(0, queneLength): currentNode = nodeQuene.pop(0) if currentNode.left: nodeQuene.append(currentNode.left) if currentNode.right: nodeQuene.append(currentNode.right) singleLevel.append(currentNode.val) result.append(singleLevel) return result