1. 程式人生 > 其它 >遍歷children_[LeetCode] 590. N叉樹的後序遍歷

遍歷children_[LeetCode] 590. N叉樹的後序遍歷

技術標籤:遍歷children

8198aa2f-2d3a-eb11-8da9-e4434bdf6706.png

題目連結: https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal

難度:簡單

通過率:69.5%

題目描述:

給定一個 N 叉樹,返回其節點值的 後序遍歷

例如,給定一個 3叉樹 :

8298aa2f-2d3a-eb11-8da9-e4434bdf6706.png

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

說明: 遞迴法很簡單,你可以使用迭代法完成此題嗎?

示例:

思路:

遞迴和迭代

程式碼:

遞迴1:

class Solution:
    def postorder(self, root: 'Node') -> List[int]:
        if not root: return []
        stack = [root]
        res = []
        while stack:
            p = stack.pop()
            stack.extend(p.children)
            res.append(p.val)
        return res[::-1]
class Solution:
    def postorder(self, root: 'Node') -> List[int]:
        if not root: return []
        res = []
        for node in root.children:
            res.extend(self.postorder(node))
        res.append(root.val)
        return res

迭代

class Solution:
    def postorder(self, root: 'Node') -> List[int]:
        if not root: return []
        stack = [root]
        res = []
        while stack:
            p = stack.pop()
            stack.extend(p.children)
            res.append(p.val)
        return res[::-1]