给定一个 n 叉树的根节点 root
,返回 其节点值的 后序遍历 。
n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null
分隔(请参见示例)。
这题可以利用递归的思想来实现,在后序遍历中从左向右依次先序遍历该每个以子节点为根的子树,然后在遍历节点本身。
先new一个List,用来存放结果。
递归需要有出口,否则会造成栈溢出。
出口:当root节点为null时,结束递归
当root节点不为null时,递归调用遍历子节点。
递归结束,利用add方法把结果存入List,最后返回结果。
/*
// 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 {
public List<Integer> postorder(Node root) {
List<Integer> res=new ArrayList<>();
DFS(root,res);
return res;
}
public void DFS(Node root,List<Integer> res){
if(root==null){
return;
}
for(int i=0;i<root.children.size();i++){
DFS(root.children.get(i),res);
}
res.add(root.val);
}
}