-
定义节点类: 首先定义了一个节点类 Node,每个节点包含一个整数值 val 和一个子节点列表 children。
-
实现后序遍历方法: 在 Solution 类中,定义了一个 postorder 方法用于执行后序遍历。在后序遍历中,需要先遍历所有子节点,然后才遍历当前节点。所以,在 traverse 方法中,首先检查节点是否为空,如果为空则直接返回。然后遍历当前节点的所有子节点,对每个子节点递归调用 traverse 方法,以实现子树的后序遍历。最后将当前节点的值添加到结果列表中。
-
结果返回: 在 postorder 方法中,调用 traverse 方法进行遍历,然后返回结果列表,即为多叉树的后序遍历结果。
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
List<Integer> res = new ArrayList<>();
public List<Integer> postorder(Node root) {
// 同二叉树的先序遍历 先访问根节点 然后一次访问孩子节点
traverse(root);
return res;
}
void traverse(Node root){
if(root == null){
return;
}
// 后序遍历 先将所有子节点全部遍历一遍
for(Node node:root.children){
traverse(node);
}
res.add(root.val);
}
}