590. N叉树的后序遍历
方法一:递归
class Solution {
public List<Integer> postorder(Node root) {
List<Integer> res = new ArrayList<Integer>();
postorder(root, res);
return res;
}
public void postorder(Node root, List<Integer> res) {
if (root == null) {
return;
}
if (root.children == null) {
return;
}
for (Node child : root.children) {
postorder(child, res);
}
res.add(root.val);
}
}
方法二:迭代
class Solution {
public List<Integer> postorder(Node root) {
LinkedList<Node> stack = new LinkedList<>();
LinkedList<Integer> output = new LinkedList<>();
if (root == null) {
return output;
}
stack.push(root);
while (!stack.isEmpty()) {
Node node = stack.pop();
output.addFirst(node.val);
for (Node item : node.children) {
if (item != null) {
stack.push(item);
}
}
}
return output;
}
}