递归算法如下:
public class lc589 {
List<Integer> ans = new LinkedList<>();
public List<Integer> preorder(Node root) {
if (root==null)return null;
ans.add(root.val);
for(Node node : root.children){
preorder(node);
}
return ans;
}
}
迭代代码如下:
public class lc589 {
public List<Integer> preorder(Node root) {
List<Integer> ans = new LinkedList<>();
Deque<Node> stack = new LinkedList<>();
if (root==null)return ans;
stack.addLast(root);
while(!stack.isEmpty()){
Node node = stack.pollLast();
ans.add(node.val);
for(int i=node.children.size()-1;i>=0;i--){
stack.addLast(node.children.get(i));
}
}
return ans;
}
}