V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
particlec
V2EX  ›  问与答

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

  •  
  •   particlec · 2023-04-19 10:08:49 +08:00 · 700 次点击
    这是一个创建于 616 天前的主题,其中的信息可能已经有所发展或是发生改变。
    遇到一个问题
    我现在有 一个树结构数据,但是我只知道 每个节点线 ,两头的节点 id ,to 为子节点,from 为父节点
    我如何根据节点线,把树的结构还原出来

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


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

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

    以下不吐槽:
    假设你有节点 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
        6
    particlec  
    OP
       2023-04-19 13:46:13 +08:00
    @jifengg 确实是倒过来的树,我现在先找到最高的父节点,然后递归操作,思路是可以,我我基本写完了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1576 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:59 · PVG 00:59 · LAX 08:59 · JFK 11:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.