谁知道这两个问题有没有性能好点的算法呢?

arbutus 2004-01-27 03:46:22
就是从一个数据表中生成树,有两中方式:
第一:表中的每列是树的一个级别,如:
列 A B C
记录 A1 B1 C1
A1 B2 C2
A1 B2 C3
这将生成一个这样的树: A1——B1——C1
|——B2——C2
|——C3

第二:表中有两列,这两列是相关的,有父子关系,如:
列 A B
记录 A1 0
A2 A1
A3 A1
A4 A2
A5 A2
A6 A3

这将生成这样的树: A1——A2——A4
| |——A5
|——A3——A6

我能用某个方法生成树,可如果数据量大了会比较慢,
有谁知道生成这样的树有没有性能比较好的算法呢?
请高手帮帮忙,谢谢了!
...全文
51 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlexAngel 2004-01-30
  • 打赏
  • 举报
回复
使用字符树
zzwu 2004-01-29
  • 打赏
  • 举报
回复
不会有特别快的算法,但也造不出特别慢的算法.
gnefuil 2004-01-27
  • 打赏
  • 举报
回复
我说的是在全局维护一个所有结点的列表
每个结点在这个列表中的位置是永远不变的,明白了么?
arbutus 2004-01-27
  • 打赏
  • 举报
回复
几千是很小,目前写程序就用这个都觉得慢了,如果以后上真实数据了就怕跑不动了,所以才想找快点的算法啊,谢谢两位!

不过还是觉得这个索引不很好建,能说详细点么?
因为要保存的不仅仅是一个节点的索引,还要考虑节点的路径,本来想用absoluteindex属性的,可这个属性是变的值,插入节点后就变了,不能用,不知道有没有什么办法呢?
gnefuil 2004-01-27
  • 打赏
  • 举报
回复
几千的数量级很小啊
就是做索引,剩下的比较耗时的问题就是在索引中查找结点
可以在对索引按照字母顺序做索引树,应该会很快出解的



pacman2000 2004-01-27
  • 打赏
  • 举报
回复
前面mysword(一怒拔剑) 说的不错,可能慢在拿到一条记录以后,查找它的节点位置上面。可以建一个节点索引,存放已经建立的节点指针,就不用每次搜索树了。
arbutus 2004-01-27
  • 打赏
  • 举报
回复
几千条记录的表就要等好十好几秒了,如果几百条记录那不是要等死人啊,
我是从头一个个记录,一个个字段扫描,然后插入,好象很慢,不知道有没有加速算法呢?
比如用什么数据结构能加速呢?
谢谢
gnefuil 2004-01-27
  • 打赏
  • 举报
回复
你用什么方法生成?数据量有多大?
居然每个结点的父子关系已经有了,生成树结构是很容易的事情了
做一个所有结点的索引,然后每个结点有一个父指针,一个子指针,一个兄弟指针
不会慢的

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧