Leetcode- 590. N叉树的后序遍历

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

例如,给定一个 3叉树 :

Leetcode- 590. N叉树的后序遍历Leetcode- 590. N叉树的后序遍历Leetcode- 590. N叉树的后序遍历

Leetcode- 590. N叉树的后序遍历

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

code:

"""
# Definition for a Node.
class Node:
    def __init__(self, val, children):
        self.val = val
        self.children = children
"""
class Solution:
    def postorder(self, root: 'Node') -> List[int]:
        if not root:                  #树为空就返回
            return []
        if not root.children:         #到达叶子结点返回值
            return [root.val]
        res=[]
        for c in root.children:
            res.extend(self.postorder(c))    #extend是将list每个元素取出后再加入列表中,而
                                             #append是将整个list作为一个元素加入到列表末尾
        res.append(root.val)          #最后的时候添加子孩子都遍历完之后的结点值
        return res                    #返回本次遍历后的list列表

思路草图:

Leetcode- 590. N叉树的后序遍历

Leetcode- 590. N叉树的后序遍历