zhangxiao
V2EX  ›  问与答

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

  •  
  •   zhangxiao · Jan 29, 2013 · 3039 views
    This topic created in 5030 days ago, the information mentioned may be changed or developed.
    问题有些绕口,举个例子就明白了,假设我有一个目录结构:


    每个节点的三元组结构是(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 replies  •  1970-01-01 08:00:00 +08:00
    est
    est
    Jan 29, 2013❤️1
    1
    http://stackoverflow.com/questions/8241342/

    但是我觉得有更简单办法做到。
    est
    est
    Jan 29, 2013
    2
    其实这类问题有个名词,叫nested set或者modified preorder,很好玩的问题。嘎嘎。
    zhangxiao
    zhangxiao
    OP
    Jan 29, 2013
    3
    @est 谢谢,没想到还有专门的问题,我去研究研究 ;)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   827 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:25 · PVG 02:25 · LAX 10:25 · JFK 13:25
    ♥ Do have faith in what you're doing.