霍夫曼编码,游戏开发中非常有名的八叉树体积碰撞检测,查询海量数据的十叉树。数据存储的树,应用很多很多的。
霍夫曼编码知道是用于压缩的,但不知道为什么要用树,而不用普通的结果呢?
@Rabbit_Yi:
这是因为计算机内存寻址造成的结果。
@田麦成: 能不能说的详细点呢?谢谢
树结构可不止二叉树。。。。平衡树。。。。B-树,多呢,查找时用的时间不一样
关键是没有发现这些树的优势在哪里?
以前有用过树状数据库,查找速度很快!特别是大型应用
树状数据库?没有用过,有什么经典的应用吗?
@Rabbit_Yi:
名字叫Cache吧,具体有点忘了,是一个海量数据的数据库
@Tom.汤: 你说的是NoSQL吗?
@Rabbit_Yi:
不是!数据库的名字就是Cache。具体没怎么了解,数据的存储结构是树状的。
@Rabbit_Yi:
其实文件目录就是一个树,寻址算法,也算是树结构的一个应用
磁盘目录和文件不就是例子么。
是,这个是很经典,能否再介绍一下我们开发会用到的,除了树控件以外的。。
树结构的经典应用就是关系型数据库、编译器。
没有看出来关系型数据库哪里用到树结构了?请指教。。
@Rabbit_Yi: 如果你有时间的话,可以找几本大学教材来读,比如《数据库原理》,《编译原理》里面都会讲到。
学过数据库原理,但是还是不太清楚树结构的经典应用,能否介绍一下,谢谢
树主要是红黑树平衡树,用来动态维护数据。
用LZ方法,构建一个数组,快排排好序nlogn。查找很方便O(1)。但是添加和删掉一条数据时间复杂度是O(N),一个大部队往后挪一个往前挪,如果是大型数据的话,100万条记录的话,光删除添加操作这时间就要很久。而且大数据空间申请...难搞。
但是我用红黑树,我添加,查找,删除都是log(n),log(n)跟O(n)差距还是很大的。而且空间申请释放,方便!
数据是永远是活的,数据库,系统内核里面很多东西都是用树。
我只是打个比方,如果你要删除快的话就可以用链表,貌似也比树要快,请指教?
仁兄果然有见地啊。。
@Rabbit_Yi: 链表没排序功能,而且查找O(N)。
嗯。。不过链表是有排序功能的,且查找也不一定比树慢。是吧。。
@Rabbit_Yi: 既然选择了链表,就排除给他排序了。如果要新插入结点的时候给他找插入位置让他继续有序,那光查找就要O(N)了,删除也是,这是相当耗时的。既然查找是O(N),肯定比树的O(lgn)慢。
如果是开发,树结构就好比树控件,涉及的操作当然就是树的常用操作了,最重要的,也是难点就是父子节点的问题了。下面给出我的商业代码,父子节点自动递归函数。你这200分可要多给我考虑点哟。
--查询所有子模块的表值函数 CREATE FUNCTION [dbo].[FN_GetSubModule] (@id AS INT ) RETURNS @temp TABLE ( [id] INT , [parentid] INT , [Code] NVARCHAR(50) , [FullName] NVARCHAR(200) , [Category] NVARCHAR(50), [ImageIndex] NVARCHAR(50), [Target] NVARCHAR(100), [IsPublic] INT, [SortCode] INT, [levels] INT --levels表示栏目层次的,是必须有的! ) AS BEGIN DECLARE @level AS INT --声明一个变量,用于保存栏目信息层次索引 SELECT @level = 0 INSERT INTO @temp SELECT Id, ParentId , Code , fullName , Category, ImageIndex, Target, IsPublic, SortCode, @level FROM dbo.PiModule WHERE Id = @id AND DeleteMark = 0 --先根据id获取根据节点的数据,@level初始为0,表示根目录 WHILE @@rowcount > 0 BEGIN SET @level = @level + 1 INSERT INTO @temp SELECT a.id , a.ParentId , a.Code , a.FullName , a.Category, a.ImageIndex, a.Target, a.IsPublic, a.SortCode, @level FROM PiModule a INNER JOIN @temp t ON a.parentid = t.id AND t.levels = @level - 1 AND a.DeleteMark = 0 END RETURN END GO
不好意思,我要的不是这个。
@Rabbit_Yi: 这么说我白贡献了?
哎,识货者大智也。
呵呵,我想知道的是树相关的经典应用,树控件用过呢,还是给你分。