429 N叉樹的層序遍歷

2022-01-23 02:34:13 字數 1679 閱讀 5106

給定乙個 n 叉樹,返回其節點值的

層序遍歷

。 (即從左到右,逐層遍歷)。

和二叉樹的層次遍歷的思想一樣;

class

solution(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...