590. N叉树的后序遍历(Python)

题目

难度:★★☆☆☆
类型:树

给定一个 N 叉树,返回其节点值的后序遍历。

例如,给定一个 3叉树 :

590. N叉树的后序遍历(Python)_第1张图片
N叉树

返回其后序遍历: [5,6,3,2,4,1].

说明: 递归法很简单,你可以使用迭代法完成此题吗?

解答

方案1:递归

class Solution:
    def postorder(self, root):
        result = []
        if not root:
            return result

        # 递归的方式
        result.append(root.val)
        for n in root.children[::-1]:
            po = self.postorder(n)
            for p in po[::-1]:
                result.insert(0, p)

方案2:迭代


class Solution:
    def postorder(self, root):
        result = []
        if not root:
            return result
        # 迭代的方式
        temp = []
        temp.append(root)
        while temp:
            node = temp.pop()
            result.insert(0, node.val)
            if len(node.children) > 0:
                for n in node.children:
                    temp.append(n)

        return result

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(590. N叉树的后序遍历(Python))