美团层序打印多叉树
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++工程师#