题目
给定一个 N 叉树,返回其节点值的前序遍历。
例如,给定一个 3叉树 :
返回其前序遍历:[1, 3, 5, 6, 2, 4]
。
方案一(递归)
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution:
def preorder(self, root: 'Node') -> [int]:
if not root:
return []
if not root.children:
return [root.val]
ret = [root.val]
for node in root.children:
ret.extend(self.preorder(node))
return ret
方案二(迭代)
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""
class Solution:
def preorder(self, root: 'Node') -> [int]:
if not root:
return []
stack = [root]
ret = []
while stack:
node = stack.pop()
ret.append(node.val)
if node.children:
node.children.reverse()
stack.extend(node.children)
return ret
原文
https://leetcode-cn.com/explore/learn/card/n-ary-tree/159/traversal/620/