"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution:
"""N叉树的层序遍历迭代法"""
def levelOrder(self, root: 'Node') -> List[List[int]]:
results = []
if not root: return []
from collections import deque
queue = deque([root])
while queue:
child_size = len(queue)
result = []
for _ in range(child_size):
cur = queue.popleft()
result.append(cur.val)
if cur.children: queue.extend(cur.children)
results.append(result)
return results
迭代思路:
与二叉树层序遍历不同的是,这里的孩子节点是由Node节点以列表的形式保存的。
迭代法的层序遍历思路是:
1.读取根节点值;
2.将该层各根节点的孩子们,依次入deque,供下一轮while里的for遍历;
3.依次遍历在上一层加入到deque的孩子们;
4.如此往复。。。