作者Killercat (杀人猫™)
看板CSSE
标题Re: [问题] DS-AVL树的问题
时间Fri Jun 13 08:37:47 2008
※ 引述《Solars (学士後医(内科?))》之铭言:
: 各位前辈、版友好,小弟最近在写avl树的作业,可是小弟的程式一直有个地方有问题
: ,老板交代的是产生一堆乱数(例如5000个),范围在1~1000内,所以会有很多数值一样的
: 乱数,我的AVL程式最後会计算这棵树的高度,但是我的程式中只有判断乱数值是否大於
: 或小於父节点的值,没有判断乱数值一样时该做什麽的动作;所以如果产生100000个乱数
: ,由於一堆乱数值都会产生相同的,导致高度永远会在一个值以内(因为范围在1~1000),
: 翻开坊间的书,AVL或BST的插入范例,也都没有看到相同数值时的处理方法,所以我该怎
: 麽去处理相同的值呢?还是这题目本身有问题?AVL能插入相同数值的节点吗?
: 麻烦各位大大赐教了,小弟想了非常久............
: 先谢谢各位大大了,感恩!!
普通来讲,AVL算BST的一种额外条件,所以BST该有的条件AVL一样有
BST本身并不能处理同key(就是你说的同数)
同样的AVL也不行。所以我们在做BST的时候要注意键值(key index)的唯一性
这边所谓的key index就是你说的乱数, 在BST里面是必须唯一的
本题无解,除非你去改AVL的结构(不过这样就不叫AVL了)
当然也不是没有非常trick的处理法啦
(比方说碰到同值就+0.00001, 然後第二个就+0.00002)
不过普通来讲AVL并不是拿来处理这种事情的
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.217.108.106
※ 编辑: Killercat 来自: 61.217.108.106 (06/13 08:39)
1F:推 scwg:多一个 field 记 key 出现的次数或用 link list 存 kv pair? 06/13 19:05