//自己重新写了一个Java的,按Ctrl-z可以结束,基本思路是用位图来实现快速发现根节点。然后 //多叉树的存储为链表结构 import java.io.*; import java.util.*; class Node { int val; Node child; Node next; Node(int v) { val = v; child = null; next = null; } } public class Build { public static void myTraverse(Node root){ Node p = root; //hierarchy traverse while(p != null){ //cur root System.out.print(p.val + " "); //siblings while(p.next != null){ System.out.print(p.next.val + " "); p = p.next; } //child if(p.child != null){ p = p.child; } else{ break; } } } public static void main(String args[]) { Scanner in = new Scanner(System.in); //bitmap //save every node //find element quickly Node[] arr = new Node[101]; for (int i = 0; i < 101; i++) { arr[i] = null; } Node coreRoot = null; int count = 0; //Ctrl-z end input while (in.hasNextLine()) { String line = in.nextLine(); String strs[] = line.split("\\s+"); Node root = null; for (int i = 0; i < strs.length; i++) { int num = Integer.valueOf(strs[i]); //cur root if (i == 0) { if (arr[num] == null) { Node temp = new Node(num); arr[num] = temp; } root = arr[num]; } //this level siblings else { Node temp = null; if (arr[num] == null) { temp = new Node(num); arr[num] = temp; } temp = arr[num]; Node p = root; while (p.next != null) { p = p.next; } p.next = temp; } } //core root if (count == 0) { coreRoot = root; } count += 1; } myTraverse(coreRoot); } }
点赞 评论

相关推荐

缘愁似个长a:销售才是部门的爹,程序员是牛马
点赞 评论 收藏
分享
牛客网
牛客企业服务