哈夫曼树是带权路径最小的一种特殊二叉树,所以也称最优二叉树。
在这里不讨论基本概念如如何计算路径等,而只着重于树的创建,具体过程让我们举例而言。其基本的原理为:将所有节点一开始都视为森林,每次从森林中选取两个根节点权值最小的树合并为一棵新树,新树的根节点大小为两个子节点大小的和,并将这棵新树重新加入到森林中。
如此一来每一轮操作都可以简化为两个基本操作:合并两棵树、插入新树,直到森林中只剩下一棵...
分类:
其他好文 时间:
2015-07-23 17:42:32
阅读次数:
139
字典树数据结构实现 1 public class Trie { 2 //字典树子节点最多值,任意一个单词都是由,26个字母组成的 3 private int SIZE = 26; 4 //根节点 5 private TrieNode root; 6 ...
分类:
其他好文 时间:
2015-07-22 20:14:54
阅读次数:
91
二叉排序树的插入与删除可能会破坏二叉排序树的性质,现在要求插入和删除操作保持其性质
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
(4)没有键值相等的节点。
#include "stdafx.h"
...
分类:
编程语言 时间:
2015-07-21 12:55:54
阅读次数:
127
编写按层次顺序(同一层自左至右)遍历二叉树的算法。
#include "stdafx.h"
#include
#include
using namespace std;
struct BiNOde
{
int ele;
BiNOde* lnode;
BiNOde* rnode;
};
vector>aa;
BiNOde*p;
BiNOde*root;
vo...
分类:
其他好文 时间:
2015-07-17 10:03:57
阅读次数:
132
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。
最直观的一种思路就是每次从二分查找树中找到最小的数,加到链表中
// BST2list.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
using namespace std;
#define INFINI...
分类:
编程语言 时间:
2015-07-16 00:50:40
阅读次数:
272
树的定义及术语flyfish 2015-7-9树是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:1)有且仅有一个特定的称为根(Root)的结点2)当 n>1时,其余结点可分为m(m>0)个互不相交的有限集T1T_{1}、T2T_{2}、…、TmT_{m},其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)
树的结点包含一个数据元素以及若干指向其子树的分支。结...
分类:
其他好文 时间:
2015-07-09 19:57:18
阅读次数:
156
B-树
B-tree树即B树,B即Balanced,平衡的意思,B-树又称为多路平衡查找树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。
一、定义
B-树是一种多路搜索树(并不一定是二叉的)
1970年,R.Bayer和...
分类:
其他好文 时间:
2015-07-08 22:45:10
阅读次数:
216
数据结构之AVL树1.基本概念AVL树的复杂程度真是比二叉搜索树高了整整一个数量级——它的原理并不难弄懂,但要把它用代码实现出来还真的有点费脑筋。下面我们来看看:1.1AVL树是什么?AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后面的代码是继承自二叉搜索树的),它的特点是:1.本身首先是一棵...
分类:
其他好文 时间:
2015-07-02 23:52:24
阅读次数:
250