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 = val
self.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