js 树结构 根据节点线 还原数据结构 问题(大佬求助)

2023-04-19 10:08:49 +08:00
 particlec
遇到一个问题
我现在有 一个树结构数据,但是我只知道 每个节点线 ,两头的节点 id ,to 为子节点,from 为父节点
我如何根据节点线,把树的结构还原出来

我现在只有节点 连线的 信息:[{to:XXX,from:XXX},{to:XXX,from:XXX}....]


我想转换的结构 :
{id:"",
params: [
{id:"",params:[] }
.....
]}

每个节点的父节点 可以有多个,但是子节点 只有一个
557 次点击
所在节点    问与答
6 条回复
xhldtc
2023-04-19 10:35:49 +08:00
节点的父节点有多个,子节点只有一个?这个树怎么和一般的树不大一样,确定没写反么
particlec
2023-04-19 10:39:32 +08:00
没有写反,就是父节点多个,子节点一个,我头都快想破了,写的都不对
zhy0216
2023-04-19 10:42:15 +08:00
1. 转成 parentToChildMap
2. 找到没有 parent 的 nodes
3. dfs 遍历第二步的 nodes
particlec
2023-04-19 10:54:05 +08:00
关键是我节点线 的顺序是乱的,子节点可以 递归,父节点有点麻烦
jifengg
2023-04-19 12:24:03 +08:00
[吐槽:把你的父子节点的定义调换一下不就是普通的树了?]

以下不吐槽:
假设你有节点 id: n1, n2, n3, n4

连线信息 {to:n1,from:n2} ,表示:节点 n1 有一个父节点 n2 。对吧

连线信息:[ {to:n1,from:n2}, {to:n1,from:n3}],表示,节点 n2 、n3 都有一个子节点 n1 ,对吧。
这个信息,最后结构是 {id:n1,parents:[{id:n2,...},{id:n3,...}]},对吧。

所以,还有啥复杂的呢?
particlec
2023-04-19 13:46:13 +08:00
@jifengg 确实是倒过来的树,我现在先找到最高的父节点,然后递归操作,思路是可以,我我基本写完了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/933657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX