二叉树的性质
1满二叉树和完全二叉树
2二叉树的主要性质
二叉树的数据结构
二叉树的算法
补充
总结1.二叉树的性质1.1满二叉树和完全二叉树 在一棵二叉树中,如果所有的分支节点都有左孩子和右孩子,并且叶子节点都集中在二叉树的最下一层,则这样的二叉树被称为满二叉树。
如果一棵深度为k有n个节点的二叉树进行编号后,各结点的编号与深度为k的满二叉树中相同位置山的结点的编号军相投,那么这棵二叉树就...
分类:
其他好文 时间:
2016-07-03 15:53:14
阅读次数:
216
Huffman树是完全二叉树,权重较大的节点距离根较近。
Huffman编码是一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字。...
分类:
编程语言 时间:
2016-06-29 11:32:54
阅读次数:
241
堆的定义如下:n个元素的序列(K1,K2......Kn)当且仅当满足Ki<=K2i&&Ki<=K2i或Ki>=K2i&&Ki>=K2i(i=1,2,3,...n/2)时称之为堆 以一维数组作为堆的存储结构,堆可以看成一个完全二叉树。 最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩 ...
分类:
编程语言 时间:
2016-06-27 23:04:17
阅读次数:
219
因为是要构造完全二叉树,所以树的形状已经确定了。 因此只要递归确定每个节点是多少即可。 ...
分类:
其他好文 时间:
2016-06-25 20:24:08
阅读次数:
121
堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:
Key[i]<=key[2i+1]&&Key[i]=Key[2i+1]&&key>=key[2i+2]
即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。
堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,
满足 Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]称为小顶堆。
由上述性质可知大顶堆的堆顶的关键字肯定是所有关键字...
分类:
编程语言 时间:
2016-06-24 15:45:04
阅读次数:
187
学习了堆排序,使用python实现了一个优先队列结构,记录一下实现过程: 用一个python的list来表示堆结构,将list作为参数传入构造函数中,然后在构造函数中建堆: 堆一般都是一个完全二叉树,那么根据完全二叉树的性质,一个节点i的左子节点为i+1,右子节点为i*2+1,以最小堆为例,根节点一 ...
分类:
编程语言 时间:
2016-06-18 18:33:55
阅读次数:
156
在打印机作业时一般采用队列的形式FIFO(fisrt in first out),但遇到一个1份的和一个100份的作业时,先打印1份的相对合理;另外,不同作业的优先级也不同,优先级高的应该先处理。 insert == Enqueue deleteMin == Dequeue 二叉堆(完全二叉树):除 ...
分类:
其他好文 时间:
2016-06-14 17:31:07
阅读次数:
176
本文是【常用算法思路分析系列】的第五篇,总结二分搜索相关的高频题目和解题思路。本文分析如下几个问题:1、求数组局部最小值问题;2、元素最左出现的位置;3、循环有序数组求最小值;4、最左原位;5、完全二叉树计算结点数;6、快速N次方。
本系列前四篇导航:
【常用算法思路分析系列】排序高频题集
【常用算法思路分析系列】字符串高频题集
【常用算法思路分析系列】栈和队列高频题集(修...
分类:
编程语言 时间:
2016-06-12 18:44:53
阅读次数:
256
堆排序有点小复杂,分成三块 第一块,什么是堆,什么是最大堆 第二块,怎么将堆调整为最大堆,这部分是重点 第三块,堆排序介绍 第一块,什么是堆,什么是最大堆 什么是堆 这里的堆(二叉堆),指得不是堆栈的那个堆,而是一种数据结构。 堆可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层 ...
分类:
编程语言 时间:
2016-06-02 18:19:15
阅读次数:
215