数据结构
leo_wc
多读书,读看报,少吃零食多睡觉
展开
-
树之基础
无论是链表,栈还是队列,它们都是线性结构的,每个节点的左边最多一个节点,右边也最多一个节点,对于大量的输入数据,线性表的访问时间太慢,不宜使用。这里我要说一种非线性的数据结构,其大部分操作的运行时间平均为O(logn)。我们涉及到的这种数据结构叫做树。在计算机科学中,树是非常有用的抽象概念。我们形象的去描述一棵树,一个家族的老祖可能有两个儿子,这两个儿子一个有一个儿子,一个有三个儿子,像这转载 2017-05-25 19:18:38 · 314 阅读 · 0 评论 -
图之基础
图(Graph)1.基本概念1)图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,可表示为G(V,E)。2)图的边或弧具有与它相关的数叫做权(Weight)。这种带权的图称为网(Network)。3)在无向图中,与顶点v相关联的边的数目称为顶点v的度(Degree)。在有向图中,以顶点v为头的弧的数目称为v的入度(InDegree);以v为尾的弧的数目称转载 2017-05-25 19:23:21 · 505 阅读 · 0 评论 -
简单二叉树实现
二叉树是最简单的树结构,树结构为层次结构,与之对应的是线性结构,例如数组,链表等。经历过的游戏项目中线性表用得比较多,相比之下,树结构用的就比较少了,也许是笔者孤陋寡闻,单方面认为树适用于大数据量的存储,排序等操作,游戏服务器可承载数据量也挺大,但是处理能力和一些硬性要求(内存,硬盘)也有限,再锋利的刀刃用的时间长了也会钝,服务器卡顿会带来客户端非常操蛋的游戏体验,所以为了长久之计,不建议在游戏服上原创 2017-05-26 18:51:49 · 4107 阅读 · 0 评论 -
反转二叉树
在上篇《简单二叉树实现》的基础上实现二叉树的反转目的如下图 代码相比之前的代码添加反转函数 “` //反转 public void Reversal() { reversal(ref root); Debug.Log(“反转”); }private void reversal(ref binary_tree_Node node) { if(node !=原创 2017-05-27 14:09:27 · 519 阅读 · 0 评论 -
哈夫曼树简介及实现
初识哈夫曼树是一种带权路径长度最短的二叉树,所以它又称为最优二叉树.主要用途利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码,例如设计电文总长最短的二进制前缀编码,就是以n个字符出现的频率作为权构造一棵哈夫曼树,由哈夫曼树求得的编码就是哈夫曼编码。概念路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,原创 2017-05-27 17:58:17 · 825 阅读 · 0 评论 -
数据结构之“堆”及推排序
概述堆是一种完全二叉树,高度为(高度为O(lgN))这种树结构的效率很高,多用于我们常说的堆排序以及优先队列,例如先入先出队列(FIFO)。堆排序的时间复杂度为O(NlgN)。ps: 完全二叉树的定义,若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,说白了,完全二叉树就是一棵数层数为h,则它的第1至h-1层没有空节点原创 2017-06-01 15:46:25 · 512 阅读 · 0 评论