数据结构
spawn888
除了灌水,我还能做什么
展开
-
二叉搜索树的插入,搜索,删除
首先提一句什么是二叉搜索树:对于树中的每个结点P,其左孩子中所有值小于该节点的值,而其右孩子中所有值大于该节点的值。前者称作前驱,后者称作后继。利用这种大小特性可以很方便查找到需要的节点。 二叉搜索树的插入:插入某一节点,值为v,从根节点作为起始,如果v小于当前节点的值,则记录的当前节点的位置作为父节点,把当前节点指针指向其左节点继续判断;否则,记录当前节点的位置,然后指针指向其原创 2014-02-25 17:41:27 · 656 阅读 · 0 评论 -
Huffman编码
哈夫曼树的创建:用一个指针数组存放每个字符的值和次数(权值),并按照权值升序规则排序,合并数组的前两个节点,并生成一个新的节点,其左右孩子即为数组的前两个元素,用根节点指向它,将其放在指针数组的首位,从第三个元素开始依次向前移动一位,重新排序,重复上述步骤直至数组中至剩下一个元素。比如: typedef struct HuffmanNode { ElementType data; i原创 2014-02-27 09:49:26 · 517 阅读 · 0 评论 -
非递归创建二叉树并求二叉树的深度
在学习二叉树时,必须要掌握的要点包括:二叉树的创建,遍历和了解二叉树的相关特性(二叉树的深度、高度、层数等等),这部分的代码实现很多教材直接以递归的方式展现,递归是个很好的编程思想,但是确实不是很容易理解,如果使用不当的话,往往写出来的程序运行效率较低,无论在耗费的时间还是占用的内存空间上比非递归较多,而且非递归能够将数据元素的出栈与进栈过程描述得更为清晰。因此我采用非递归的方式实现一遍。由于关于原创 2014-02-20 15:40:52 · 914 阅读 · 0 评论 -
Dijkstra最短路径
大致过程: 1.确定一个源点,原创 2014-06-12 10:18:55 · 488 阅读 · 0 评论 -
图的创建遍历
采用邻接表存储结构表示图,原创 2014-05-29 12:10:14 · 783 阅读 · 0 评论 -
Prim、Kruskal最小生成树
Prim:在图中取某个顶点为起始点,原创 2014-05-29 13:23:02 · 583 阅读 · 0 评论