1.题目
这道题是2024-2-19的签到题,题目难度为简单。
考察的知识点为DFS算法(树的深度遍历)。
题目链接:N叉树的后序遍历
给定一个 n 叉树的根节点 root
,返回 其节点值的 后序遍历 。
n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null
分隔(请参见示例)。
2.思路
这道题归根结底还是考察DFS算法,和昨天的前序遍历不同的是,它们的逻辑顺序不同,树的前序遍历思路是先添加值再递归遍历子结点;而树的后序遍历思路是先递归遍历子结点然后添加值,即遍历顺序是因此代码风格还是和昨天的一样,具体实现和注释在第3条中实现。
3.代码
"""
# Definition for a Node.
class Node:def __init__(self, val=None, children=None):self.val = valself.children = children
"""class Solution:def postorder(self, root: 'Node') -> List[int]:# 定义结果列表rst = []# 定义递归函数(DFS)def dfs(node):# 如果结点不为空if node:# 利用循环来分别递归子结点(从左到右)for child in node.children:dfs(child)# 添加当前结点的值到结果列表里面rst.append(node.val)# 递归遍历root结点dfs(root)return rst