题目
思路
树的前序遍历方法
递归思路比较简单直接看代码
迭代思路时使用一个列表,若根节点不为None,则初始化这个列表node_list=[root]
,然后只要这个列表不为空列表就说明还有元素没有遍历到,此时因为是前序遍历,所以要将迭代到的元素的子节点加到列表最前端,以达到接续遍历该节点的最左子节点的逻辑。
Python3代码
迭代版
def preorder(self, root: 'Node') -> List[int]:
if root == None: return []
res, node_list = [], [root]
while(node_list != []):
temp_node = node_list.pop(0)
res.append(temp_node.val)
if temp_node.children != []: node_list = temp_node.children + node_list
return res
递归版
def preorder(self, root: 'Node') -> List[int]:
res = []
def pre(root):
if root is not None:
res.append(root.val)
for child in root.children:
pre(child)
pre(root)
return res