现在用递归算法生成树没有问题,我想问的是有没有其它高效生成树的算法,表中也可以添加字段.(.net开发)
18 个解决方案
#1
oralce数据库好像可以直接取出数来,
#2
oracle 取出的就是这种结构,还需要递归循环生成树
#3
可添加字段就简单了
把节点和根的距离保存起来,取时按(级数,父id,id)排序,这样生成树算法是o(n)的且中间变量数为常数
把节点和根的距离保存起来,取时按(级数,父id,id)排序,这样生成树算法是o(n)的且中间变量数为常数
#4
关键在于树本身就是一种递归定义的数据结构!
因此用递归最合适不过了,当然任何递归算法都可以改为非递归算法!
至于高效的问题,俺觉得与是否递归无关!
因此用递归最合适不过了,当然任何递归算法都可以改为非递归算法!
至于高效的问题,俺觉得与是否递归无关!
#5
请问用汇编还是用c#高效?其实这个就没有意义了,否则你为什么不用汇编呢?
相比之下,递归和非递归的差别要比c#与汇编的差别还大。使用递归可以保持清晰头脑、而且也很高效。
只要经过实际测试证明效率足够就可以了。编程要的是正好合适,而不是过分追求高效(因为那往往丧失可维护性)。
相比之下,递归和非递归的差别要比c#与汇编的差别还大。使用递归可以保持清晰头脑、而且也很高效。
只要经过实际测试证明效率足够就可以了。编程要的是正好合适,而不是过分追求高效(因为那往往丧失可维护性)。
#6
你可以把递归利用堆栈转换为非递归
不过诚如楼上所说,你文档不清楚的话,交班时人家看得一头雾水。。。。。
不过诚如楼上所说,你文档不清楚的话,交班时人家看得一头雾水。。。。。
#7
首先本人在开发的时候也是用递归实现的,发本贴的目的也就是想学习一下怎么用非递归的方法生成树,纯粹的学习,还请各位高手给出一个方案.
#9
把表结构直接写成xml 然后绑定!看到这个结果,你是不是想杀了我啊
#10
大多数的递归都可以用for循环代替
#11
这样的结构用递归是最好的了,如果不想用递归实现树结构,只能改数据库结构
比如改为(ID,name) 通过ID长度来控制父子关系 比如父ID为 AA 子ID则为AABB 孙子ID为AABBCC
以持类推,在处理时和查询时都非常方便了
比如改为(ID,name) 通过ID长度来控制父子关系 比如父ID为 AA 子ID则为AABB 孙子ID为AABBCC
以持类推,在处理时和查询时都非常方便了
#12
#13
hehe ,帮顶下撒
#14
这种类比不恰当吧。另外使用递归从来不高效,递归算法占用系统资源非常严重。
至于使用递归可以保持头脑清醒?我看各人的思维方式都不尽相同的。
#15
要高效,不要用这种结构
Code Name 对编码定义规则! 几千行没有一点问题,结构也很清晰明了!
Code Name 对编码定义规则! 几千行没有一点问题,结构也很清晰明了!
#16
算法也很简单
#17
能不能大概的介绍一下方法,这个我不知道.
#18
不用递归也可以。一个ORDER BY 就可以了。
ORDER BY PID,ID ,然后 从 ITEM(0)到 ITEM(N-1)直接放到树中就可以了。
ORDER BY PID,ID ,然后 从 ITEM(0)到 ITEM(N-1)直接放到树中就可以了。
#1
oralce数据库好像可以直接取出数来,
#2
oracle 取出的就是这种结构,还需要递归循环生成树
#3
可添加字段就简单了
把节点和根的距离保存起来,取时按(级数,父id,id)排序,这样生成树算法是o(n)的且中间变量数为常数
把节点和根的距离保存起来,取时按(级数,父id,id)排序,这样生成树算法是o(n)的且中间变量数为常数
#4
关键在于树本身就是一种递归定义的数据结构!
因此用递归最合适不过了,当然任何递归算法都可以改为非递归算法!
至于高效的问题,俺觉得与是否递归无关!
因此用递归最合适不过了,当然任何递归算法都可以改为非递归算法!
至于高效的问题,俺觉得与是否递归无关!
#5
请问用汇编还是用c#高效?其实这个就没有意义了,否则你为什么不用汇编呢?
相比之下,递归和非递归的差别要比c#与汇编的差别还大。使用递归可以保持清晰头脑、而且也很高效。
只要经过实际测试证明效率足够就可以了。编程要的是正好合适,而不是过分追求高效(因为那往往丧失可维护性)。
相比之下,递归和非递归的差别要比c#与汇编的差别还大。使用递归可以保持清晰头脑、而且也很高效。
只要经过实际测试证明效率足够就可以了。编程要的是正好合适,而不是过分追求高效(因为那往往丧失可维护性)。
#6
你可以把递归利用堆栈转换为非递归
不过诚如楼上所说,你文档不清楚的话,交班时人家看得一头雾水。。。。。
不过诚如楼上所说,你文档不清楚的话,交班时人家看得一头雾水。。。。。
#7
首先本人在开发的时候也是用递归实现的,发本贴的目的也就是想学习一下怎么用非递归的方法生成树,纯粹的学习,还请各位高手给出一个方案.
#8
#9
把表结构直接写成xml 然后绑定!看到这个结果,你是不是想杀了我啊
#10
大多数的递归都可以用for循环代替
#11
这样的结构用递归是最好的了,如果不想用递归实现树结构,只能改数据库结构
比如改为(ID,name) 通过ID长度来控制父子关系 比如父ID为 AA 子ID则为AABB 孙子ID为AABBCC
以持类推,在处理时和查询时都非常方便了
比如改为(ID,name) 通过ID长度来控制父子关系 比如父ID为 AA 子ID则为AABB 孙子ID为AABBCC
以持类推,在处理时和查询时都非常方便了
#12
#13
hehe ,帮顶下撒
#14
这种类比不恰当吧。另外使用递归从来不高效,递归算法占用系统资源非常严重。
至于使用递归可以保持头脑清醒?我看各人的思维方式都不尽相同的。
#15
要高效,不要用这种结构
Code Name 对编码定义规则! 几千行没有一点问题,结构也很清晰明了!
Code Name 对编码定义规则! 几千行没有一点问题,结构也很清晰明了!
#16
算法也很简单
#17
能不能大概的介绍一下方法,这个我不知道.
#18
不用递归也可以。一个ORDER BY 就可以了。
ORDER BY PID,ID ,然后 从 ITEM(0)到 ITEM(N-1)直接放到树中就可以了。
ORDER BY PID,ID ,然后 从 ITEM(0)到 ITEM(N-1)直接放到树中就可以了。