import java.util.*;/** * Created by Intellij IDEA. * * @author JonnyJiang * @date 2021/9/25 */public class NSubTree { public Node root; public List<Integer> dfs(){ return root.dfs(root); } public List<List<Integer>> bfs(){ return root.bfs(root); } public static void main(String[] args) { NSubTree nSubTree = new NSubTree(); Node root = new Node(1); Node sub1 = new Node(2); Node sub2 = new Node(3); Node sub3 = new Node(4); Node sub4 = new Node(5); Node sub5 = new Node(6); Node sub6 = new Node(7); Node sub7 = new Node(8); Node sub8 = new Node(9); List<Node> subs1 = new ArrayList<>(); subs1.add(sub1); subs1.add(sub2); subs1.add(sub3); List<Node> subs2 = new ArrayList<>(); subs2.add(sub4); subs2.add(sub5); sub1.sub = subs2; root.sub = subs1; nSubTree.root = root; System.out.println(nSubTree.bfs()); }}class Node{ public int val; public List<Node> sub; public Node(int val){ this.val = val; sub = null; } public List<Integer> dfs(Node root) { List<Integer> ret = new ArrayList<>(); if(root == null){ return ret; } if(root.sub == null){ ret.add(root.val); return ret; } Stack<Node> stack = new Stack<>(); stack.push(root); Node tmp; while(!stack.isEmpty()){ tmp = stack.pop(); ret.add(tmp.val); if(tmp.sub != null){ Collections.reverse(tmp.sub); for(Node n:tmp.sub){ stack.push(n); } } } return ret; } public List<List<Integer>> bfs(Node root) { List<List<Integer>> ret = new ArrayList<>(); if(root == null){ return ret; } if(root.sub == null){ List<Integer> e = new ArrayList<>(); e.add(root.val); ret.add(e); return ret; } Queue<Node> queue = new LinkedList<>(); Queue<Node> queue2 = new LinkedList<>(); queue.offer(root); Node tmp; List<Integer> list = new ArrayList<>(); ret.add(list); while(!queue.isEmpty()){ tmp = queue.poll(); list.add(tmp.val); if(tmp.sub != null){ for(Node n:tmp.sub){ queue2.offer(n); } } if(queue.isEmpty() && !queue2.isEmpty()){ list = new ArrayList<>(); ret.add(list); Queue<Node> t = queue2; queue2 = queue; queue = t; } } return ret; }}