每日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)

原文地址:https://www.cnblogs.com/LLLLgR/p/15027501.html