请问 网易9.12 前端第一题二叉树怎么构建

输入
4 3
1 left 2
2 left 3
2  right 4
第一行描述树有4个节点 3条边
第1条边 :节点1的左节点 2
第2条边 :节点2的左节点 3
第3条边 :节点2的右节点 4

有java 和js版本的处理方式吗
#网易##笔试题目#
全部评论
不用构建,用* 2的数组构建得了 又方便又快
3 回复 分享
发布于 2020-09-12 17:12
我构建了,可以看我帖子 不过是双向的树orz
点赞 回复 分享
发布于 2020-09-12 17:14
let m = readline(); let n = readline(); let map = new Map(); let count = 0; for(let i = 0;i < n; i++){     let line = readline().split(" ");         map.set(line[0],         {             value:map.has(line[0]) ? (map.get(line[0]).value.concat(line.join(" "))) : ([].concat(line.join(" "))),             count:map.has(line[0]) ? (map.get(line[0]).count + 1) : 1         }); } map.forEach((item) => {     if(item.count === 2) {         let flag = true;         for(let i = 0; i < item.value.length; i++) {             if(map.has(item.value[i].split(" ")[2])) {                 flag = false;                  break;             }         }         if(flag) {             count ++;         }     } }); 当时想着构建树的话太麻烦了。。。我的想法是把父节点和对应的输入存起来并记录父节点在输入中出现的次数,如果满足条件的话,父节点肯定会在输入中出现两次,并且它的子节点一定不会出现在父节点中 思路和代码可能有点绕 凑合当个参考吧= =
点赞 回复 分享
发布于 2020-09-12 17:34
https://pasteme.cn/52335
点赞 回复 分享
发布于 2020-09-12 17:40
搞一个数组,按父下标存一个对象,保存左右,最后遍历一遍,如果有左右,并且左右的下标对应的位置为empty就满足条件
点赞 回复 分享
发布于 2020-09-12 17:45
var line; var j = 0; var arr = []; while(line=readline()){     var a = [];//二维数组     for(var k = 0; k<line; k++){         a.push(readline());     } } function init(j) {     //深度优先搜索     if(j===line){         console.log(arr.join("-"));         return;     }     for(var i = 0;i<a[j].length;i++){         //堆的原理         arr.push(a[j][i]);         init(j+1);         arr.pop();     } } init(j);
点赞 回复 分享
发布于 2020-09-12 18:30
可以参考一下我的解法 https://www.nowcoder.com/discuss/508509
点赞 回复 分享
发布于 2020-09-12 22:40

相关推荐

10-28 23:50
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务