V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhangxiao
V2EX  ›  问与答

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

  •  
  •   zhangxiao · Jan 29, 2013 · 2672 views
    This topic created in 4846 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
        1
    est  
       Jan 29, 2013   ❤️ 1
    http://stackoverflow.com/questions/8241342/

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