每日leetcode-数组-589. N 叉树的前序遍历
分类:树-树的前序遍历
题目描述:
给定一个 N 叉树,返回其节点值的 前序遍历 。
N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。
进阶:
递归法很简单,你可以使用迭代法完成此题吗?
解题思路:用栈来存储,栈的性质是先入后出,所以子树按照逆序压入栈中。
""" # 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') -> List[int]: if not root: return [] res,stack = [],[root,] # stack.append(root) while len(stack): tmp = stack.pop() res.append(tmp.val) stack.extend(tmp.children[::-1]) return res
时间复杂度:O(n)
空间复杂度:O(n)