美团层序打印多叉树

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++工程师#
全部评论
题目不是有3个要求吗?第一个就是要求要定义出多叉叔啊
点赞 回复 分享
发布于 2016-09-12 13:03
感觉这个题目坑太多,只是从给出的test case来说,楼主解法很漂亮~赞 ~
点赞 回复 分享
发布于 2016-09-12 12:39
确实没说第一行是根啊,需要根据输入先把多叉树建出来,再从根遍历
点赞 回复 分享
发布于 2016-09-12 12:35
没说第一行是根,需要先找根
点赞 回复 分享
发布于 2016-09-12 11:06
题目也没说第一行第一个就是根节点啊,只说了是父节点
点赞 回复 分享
发布于 2016-09-12 10:27
你这并没有实现多叉树数据结构啊
点赞 回复 分享
发布于 2016-09-12 09:26
按照题目要求是需要给出多叉树的定义 所以需要重新建一个类mutNode 然后对node进行操作。。
点赞 回复 分享
发布于 2016-09-12 09:11

相关推荐

每晚夜里独自颤抖:1600一个月?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务