前言
分别使用迭代和遍历
题目
源码
/*
// 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 {
List<Integer> ans=new ArrayList<>();
public List<Integer> preorder(Node root) {
// 方法1,迭代
// LinkedList<Node> stack=new LinkedList<>();
// LinkedList<Integer> ans=new LinkedList<>();
// if(root==null){
// return ans;
// }
// stack.add(root);
// while(!stack.isEmpty()){
// Node node=stack.pollLast();
// ans.add(node.val);
// Collections.reverse(node.children);
// for(Node item:node.children){
// stack.add(item);
// }
// }
// return ans;
// 方法2,递归
if(root==null){
return ans;
}
ans.add(root.val);
for(Node item:root.children){
if(item!=null){
preorder(item);
}
}
return ans;
}
}