Binary Tree
Feynman1999
理论都是灰色的,而生活之树常青^_^
展开
-
堆与堆排序
引言在简单选择排序中,我们每一趟比较时并没有将比较的结果保存下来,这样下一趟可能会产生重复的比较,导致效率降低。如果可以做到每次在选择到最小记录的同时,并根据比较结果对其他记录做出相应的调整,那样排序的总体效率就会非常高了。下面要介绍的堆排序就是对简单选择排序的一种改进,是由Floyd和Williams在1964年共同发明的,同时,他们发明了"堆"这一数据结构。原创 2017-06-03 19:27:49 · 512 阅读 · 0 评论 -
霍夫曼编码的实现(数组模拟)
霍夫曼编码是一个通过霍夫曼树进行的一种编码,一般情况下,以字符:‘0’与‘1’表示。编码的实现过程很简单,只要实现霍夫曼树,通过遍历霍夫曼树,规定向左子树遍历一个节点编码为“0”,向右遍历一个节点编码为“1”,结束条件就是遍历到叶子节点。 代码示例(数组处理)//Author:Feynman1999 #include#include#includetypedef st原创 2017-05-04 21:58:57 · 2314 阅读 · 0 评论 -
霍夫曼树(最优二叉树)简介
一、霍夫曼编码 说到霍夫曼树,就不得不提霍夫曼编码(Huffman Coding)。霍夫曼编码是可变字长编码(VLC)的一种。David.A.Huffman于1952年提出该编码方法,即完全依据字符出现概率来构造异字头的平均长度最短的码字,亦称之为最佳编码。 在数据通信中,需要将传送的文字转换成二进制的字符串,用0,1码的不同排列来表示字符。例如,需传送的报文为“AFT原创 2017-05-04 20:01:09 · 6056 阅读 · 0 评论 -
平衡二叉树(AVL)的实现
引言AVL树是一种改进的二叉排序树,得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis(两位俄罗斯数学家)。他们在 1962 年的论文《An algorithm for the organization of information》中发表了它。原文PDF链接平衡二叉树(Self-Balancing Binary Search Tree)是一种原创 2017-05-18 20:43:19 · 459 阅读 · 1 评论 -
线索二叉树(Threaded BinaryTree)
线索二叉树 n个结点的二叉链表中含有n+1 (2n-(n-1)=n+1) 个空指针域。利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前趋和后继结点的指针(这种附加的指针称为"线索")。 线索化的实质就是将二叉链表中的空指针改为指向前驱或后继的线索。由于前驱和后继信息只有在遍历该二叉树时才能得到,所以,线索化的过程就是在遍历的过程中修改空指针的过原创 2017-04-27 21:23:00 · 485 阅读 · 0 评论 -
二叉排序树(二叉搜索、查找树)(BST树)
零、引言如果一个数据集是循序存储,那么插入操作就是将记录放在表的末端,给表记录数加一即可;删除操作可以是删除后,后面的记录向前移,也可以是要删除的元素与最后一个元素互换,表记录数减一。这样整个数据集是无序的,插入和删除的效率很高,但是查找的效率就很低。如果查找的数据集是有序线性表,并且是顺序存储的,查找就可以用折半、插值、斐波那契等查找法来实现。但是,因为数据的有序,在插入和删除操作上,就原创 2017-05-17 20:55:30 · 790 阅读 · 0 评论 -
二叉树的建立(扩展二叉树法)
存储结构由于二叉树的特殊性,可以用顺序结构来实现二叉树。如果是完全二叉树,直接按照树的层序依次将每个结点存入数组,相应的下标对应其相同的位置。如果是一般的二叉树,尽管层序编号不能反映逻辑关系,但是可以将其按完全二叉树编号,把不存在的结点设置为^ 这时候,若情况比较极端:一颗深度为k的右斜树,其只有k个结点,却需要分配2^k -1个存储单元空间,比较浪费。所以一般顺序存储结构只用于完全二原创 2017-04-14 22:07:15 · 8933 阅读 · 6 评论 -
已知二叉树的两种遍历序列重建树
遍历顺序前序:遍历顺序为,根节点、左子树、右子树;中序:遍历顺序为,左子树、根节点、右子树;后序:遍历顺序为,左子树、右子树、根节点。解决思想可以发现,二叉树前序中的第一个节点为树的根节点root,然后找出root在中序里面的位置,就可以把前序和中序分别划分为左、右子树两个部分,然后递归调用即可。e.g前序 ABCDEF 中序 CBAE原创 2017-04-15 13:51:28 · 661 阅读 · 0 评论 -
简单哈夫曼 编/译码系统的设计与实现
问题描述利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(解码)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站设计一个哈夫曼编译码系统。基本要求(1)初始化(Initialzation)。从数据文件DataFile原创 2017-06-21 16:52:44 · 4212 阅读 · 4 评论