particlec
0.01D
V2EX  ›  问与答

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

  •  
  •   particlec · Apr 19, 2023 · 1327 views
    This topic created in 1126 days ago, the information mentioned may be changed or developed.
    遇到一个问题
    我现在有 一个树结构数据,但是我只知道 每个节点线 ,两头的节点 id ,to 为子节点,from 为父节点
    我如何根据节点线,把树的结构还原出来

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


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

    每个节点的父节点 可以有多个,但是子节点 只有一个
    6 replies    2023-04-19 13:46:13 +08:00
    goofish
        1
    goofish  
       Apr 19, 2023   ❤️ 1
    节点的父节点有多个,子节点只有一个?这个树怎么和一般的树不大一样,确定没写反么
    particlec
        2
    particlec  
    OP
       Apr 19, 2023
    没有写反,就是父节点多个,子节点一个,我头都快想破了,写的都不对
    zhy0216
        3
    zhy0216  
       Apr 19, 2023   ❤️ 1
    1. 转成 parentToChildMap
    2. 找到没有 parent 的 nodes
    3. dfs 遍历第二步的 nodes
    particlec
        4
    particlec  
    OP
       Apr 19, 2023
    关键是我节点线 的顺序是乱的,子节点可以 递归,父节点有点麻烦
    jifengg
        5
    jifengg  
       Apr 19, 2023   ❤️ 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
       Apr 19, 2023
    @jifengg 确实是倒过来的树,我现在先找到最高的父节点,然后递归操作,思路是可以,我我基本写完了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3514 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 10:32 · PVG 18:32 · LAX 03:32 · JFK 06:32
    ♥ Do have faith in what you're doing.