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

三元组集合表示的目录结构怎么转换成目录序?

  •  
  •   zhangxiao · 2013-01-29 07:47:25 +08:00 · 2226 次点击
    这是一个创建于 4119 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题有些绕口,举个例子就明白了,假设我有一个目录结构:


    每个节点的三元组结构是(id, parent, weight),对应上面结构的数据就是:
    (1, 0, 0)
    (2, 0, 1)
    (3, 0, 2)
    (4, 1, 0)
    (5, 1, 1)
    (6, 1, 2)
    (7, 5, 0)
    (8, 3, 0)
    (9, 5, 1)
    (10, 6, 0)

    id表示节点序号;parent是父节点序号,根节点的parent是0;weight越小,在同级里排序越靠前。

    现在我要根据这些三元组得到一个目录序:


    也就是最后得到这样一个序列:
    1, 4, 5, 7, 9, 6, 10, 2, 3, 8

    最效率的方法是什么?
    3 条回复    1970-01-01 08:00:00 +08:00
    est
        1
    est  
       2013-01-29 09:45:28 +08:00   ❤️ 1
    http://stackoverflow.com/questions/8241342/

    但是我觉得有更简单办法做到。
    est
        2
    est  
       2013-01-29 10:39:30 +08:00
    其实这类问题有个名词,叫nested set或者modified preorder,很好玩的问题。嘎嘎。
    zhangxiao
        3
    zhangxiao  
    OP
       2013-01-29 15:59:52 +08:00
    @est 谢谢,没想到还有专门的问题,我去研究研究 ;)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   998 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:51 · PVG 04:51 · LAX 13:51 · JFK 16:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.