给定一个 N 叉树,返回其节点值的后序遍历
List<Integer> res = new LinkedList<>();
public List<Integer> postorder(Node root) {
dfs(root);
return res;
}
void dfs(Node root){
if (root == null)
return;
for (int i=0;i < root.children.size();i++){
dfs(root.children.get(i));
}
res.add(root.val);
}
public List<Integer> postorder(Node root){//迭代 不好理解
LinkedList<Node> stack = new LinkedList<>();
LinkedList<Integer> output = new LinkedList<>();
if (root == null){
return output;
}
stack.add(root);
while (!stack.isEmpty()){
Node node = stack.pollLast();
output.addFirst(node.val);
for (Node item:node.children){
if (item != null){
stack.add(item);
}
}
}
return output;
}