給定乙個 n 叉樹,返回其節點值的
層序遍歷
。 (即從左到右,逐層遍歷)。
和二叉樹的層次遍歷的思想一樣;
classsolution(object):
deflevelorder(self, root):
"""超出時間限制
:type root: node
:rtype: list[list[int]]
"""if
notroot:
return
stack, stack_tmp = [root],
result = [[root.val]]
while
stack:
cur = stack.pop()
forchild
incur.children:
stack_tmp.insert(0, child)
ifnot
stack
andstack_tmp:
# 時間超出的原因可能在這,遍歷一邊接著又進行反轉,花費時間可能比較多;
fortmp
instack_tmp][::-
1])stack = stack_tmp[:]
stack_tmp =
return
result
deflevelorder(self, root):
""":type root: node
:rtype: list[list[int]]
"""if
notroot:
return
stack, stack_tmp = [root],
result =
while
stack:
cur = stack.pop()
result[-
forchild
incur.children:
stack_tmp.insert(0, child)
ifnot
stack
andstack_tmp:
stack = stack_tmp[:]
stack_tmp =
return
result
deflevelorder(self, root):
"""遞迴實現,時間超出限制
:type root: treenode
:rtype: list[list[int]]
"""result =
ifnot
root:
return
result
def
helper(node, depth, res):
"""利用前序遍歷的思想
"""if
notnode:
return
# 超出遞迴的長度表明是新的一層,則新新增陣列
ifdepth
>= len(res):
# 可以理解成每個node都能對應到樹的depth
forchild
innode.children:
helper(child, depth
+1, res)
helper(root, 0, result)
return
result
429 N 叉樹的層序遍歷
給定乙個n叉樹,返回其節點值的層序遍歷。即從左到右,逐層遍歷 樹的序列化輸入是用層序遍歷,每組子節點都由null值分隔 參見示例 c的函式原型 definition for a node.struct node return an array of arrays of size returnsize...
429 N 叉樹的層序遍歷
給定乙個 n 叉樹,返回其節點值的層序遍歷。即從左到右,逐層遍歷 樹的序列化輸入是用層序遍歷,每組子節點都由 null 值分隔 參見示例 示例 1 輸入 root 1,null,3,2,4,null,5,6 輸出 1 3,2,4 5,6 示例 2 輸入 root 1,null,2,3,4,5,nul...
leetcode 429 N叉樹的層序遍歷
給定乙個 n 叉樹,返回其節點值的層序遍歷。即從左到右,逐層遍歷 例如,給定乙個3叉樹 返回其層序遍歷 1 3,2,4 5,6 說明 樹的深度不會超過1000。樹的節點總數不會超過5000。遞迴實現 definition for a node.class node public node int v...