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

2013-01-29 07:47:25 +08:00
 zhangxiao
问题有些绕口,举个例子就明白了,假设我有一个目录结构:
http://gist.github.com/4660355

每个节点的三元组结构是(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越小,在同级里排序越靠前。

现在我要根据这些三元组得到一个目录序:
http://gist.github.com/4660402

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

最效率的方法是什么?
2235 次点击
所在节点    问与答
3 条回复
est
2013-01-29 09:45:28 +08:00
http://stackoverflow.com/questions/8241342/

但是我觉得有更简单办法做到。
est
2013-01-29 10:39:30 +08:00
其实这类问题有个名词,叫nested set或者modified preorder,很好玩的问题。嘎嘎。
zhangxiao
2013-01-29 15:59:52 +08:00
@est 谢谢,没想到还有专门的问题,我去研究研究 ;)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/59130

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX