js 树结构 根据节点线 还原数据结构 问题(大佬求助) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
particlec
0.01D
V2EX    问与答

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

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

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


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

    每个节点的父节点 可以有多个,但是子节点 只有一个
    6 条回复    2023-04-19 13:46:13 +08:00
    goofish
        1
    goofish  
       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     Solana     5207 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 06:59 PVG 14:59 LAX 22:59 JFK 01:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86