美团层序打印多叉树
public class Main1 { public static void main(String args[]) { Scanner in = new Scanner(System.in); //保存根节点到直接子元素的映射 Map<Integer, Integer[]> map = new HashMap<Integer, Integer[]>(); //根节点 int root = 0; boolean first = true; while (in.hasNext()) { String line = in.nextLine(); String[] s = line.split("\\s"); //解析字符串到整数 Integer[] ints = new Integer[s.length]; for (int i = 0; i < s.length; i++) { ints[i] = Integer.parseInt(s[i]); } if (first) { //保存根节点 root = ints[0]; first = false; } map.put(ints[0], ints); } //层序遍历 Queue<Integer> q = new LinkedList<Integer>(); q.add(root); while (!q.isEmpty()) { int r = q.remove(); System.out.print(r + " "); Integer[] nodes = map.get(r); if (nodes != null) { for (int i = 1; i < nodes.length; i++) { q.add(nodes[i]); } } } } }
#美团##C++工程师#