給你乙個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。
示例:
二叉樹:[3,9,20,null,null,15,7],
3/ \
9 20
/ \
15 7
返回其層次遍歷結果:
[ [3],
[9,20],
[15,7]
]
我的解法:
def levelorder(self, root: treenode) -> list[list[int]]:
if not root :
return
arr , res = [root],
while arr:
temp =
temp_res =
for node in arr:
arr = temp
return res
廣度優先遍歷,但是很明顯,這個寫法的記憶體消耗很是嚴重啊。優化方法暫時還沒想到,看到的很多寫法都和這個類似,區別在於部分使用到了佇列來實現,但是跑下來效果沒差,hmmmm,優化方法暫且放到一邊,待日後再整。
貼一波使用佇列的方法:
def levelorder(self, root):
queue = collections.deque()
res =
while queue:
size = len(queue)
level =
for _ in range(size):
cur = queue.popleft()
if not cur:
continue
if level:
return res
leetcode刷題python之二叉樹的層次遍歷
題目 給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 definition for a binary tree node.class treen...
leetcode刷題筆記 二叉樹5
給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。輸入 3,2,1,6,0,5 輸出 返回下...
leetcode刷題筆記 二叉樹6
根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3 9,20 15,7 中序遍歷 inorder 9 3,15 20,7 返回如下的二叉樹 3 9 20 157這是我們資料結構學習二叉樹必考的題型之一,但我們這次需要程式設計做出,...