leetcode(Tree)–590. N叉树的后序遍历
1,题目:
2,思路:
方法一:迭代:
用到了栈,栈用于存放节点的值
用到了linkedList链表,这个链表用于存放最后的结果
方法二:递归:
其实就是在dfs这个方法中进行了递归的操作。
3,代码:
方法一:迭代:
class Solution {
public List<Integer> postorder(Node root) {
//迭代
LinkedList<Integer> res = new LinkedList<>();
LinkedList<Node> stack = new LinkedList<>();
if (root == null) return res;
stack.push(root);
while (!stack.isEmpty()) {
Node node = stack.pop();
res.addFirst(node.val);
for (Node child : node.children) {
if (child != null) {
stack.push(child);
}
}
}
return res;
}
}
方法二:递归:
class Solution {
//递归
private List<Integer> res;
public List<Integer> postorder(Node root) {
res = new LinkedList<>();
dfs(root);
return res;
}
private void dfs(Node root) {
if(root == null) return;
for(Node child : root.children)
dfs(child);
res.add(root.val);
}
}