日期:2014-05-20  浏览次数:20776 次

.net中除了递归外,其它的生成树算法
表结构是 id,name,pid(父id) 
现在用递归算法生成树没有问题,我想问的是有没有其它高效生成树的算法,表中也可以添加字段.(.net开发)

------解决方案--------------------
可添加字段就简单了

把节点和根的距离保存起来,取时按(级数,父id,id)排序,这样生成树算法是o(n)的且中间变量数为常数
------解决方案--------------------
关键在于树本身就是一种递归定义的数据结构!

因此用递归最合适不过了,当然任何递归算法都可以改为非递归算法!

至于高效的问题,俺觉得与是否递归无关!
------解决方案--------------------
请问用汇编还是用c#高效?其实这个就没有意义了,否则你为什么不用汇编呢?

相比之下,递归和非递归的差别要比c#与汇编的差别还大。使用递归可以保持清晰头脑、而且也很高效。

只要经过实际测试证明效率足够就可以了。编程要的是正好合适,而不是过分追求高效(因为那往往丧失可维护性)。
------解决方案--------------------
不用递归也可以。一个ORDER BY 就可以了。
ORDER BY PID,ID ,然后 从 ITEM(0)到 ITEM(N-1)直接放到树中就可以了。