题目1176:树查找 时间限制:1 秒 内存限制:32 兆 题目描述: 有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。 输入: 输入有多组数据。每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。 输出: 输出该树 ...
分类:
其他好文 时间:
2016-07-24 17:55:47
阅读次数:
121
完全二叉树(堆)和满二叉树的结构: 满二叉树的判断: 二叉树的层次遍历。 完全二叉树的判断: 二叉树的层次遍历。 堆的增删改查: 增:按照次序从最右边节点插入,从下往上冒泡。 删:将最右下角元素置于堆顶,从上往下冒泡。 改:增+删 查:O(logN) ...
分类:
其他好文 时间:
2016-07-24 10:30:59
阅读次数:
149
满二叉树:在不增加树的层数的前提下,无法再多添加一个结点的二叉树,就是满二叉树。 完全二叉树:如果只是删除了满二叉树最底层最右边的连续若干个结点,这样形成的二叉树就是完全二叉树。 二叉树的存储: 顺序存储: 优点:查找某个结点的父结点和子结点(包括判断有没有子结点)速度很快 缺点:耗用内存空间过大 ...
分类:
其他好文 时间:
2016-07-24 06:57:45
阅读次数:
151
堆排序堆排序(heapsort)也是一种相对高效的排序方法,堆排序的时间复杂度为O(n lgn),同时堆排序使用了一种名为堆的数据结构进行管理。二叉堆
二叉堆是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。
如上图显示,(a)是一个二叉堆(最大堆), (b)是这个二叉堆...
分类:
编程语言 时间:
2016-07-23 23:07:31
阅读次数:
473
题目描述 有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。 输入描述: 输入有多组数据。每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。 输出描述: 输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没 ...
分类:
其他好文 时间:
2016-07-22 10:10:01
阅读次数:
188
一、二叉树相关概念
1.1 基本术语
结点的度:一个结点的子结点的个数称为结点的度。树的度:树中结点的最大度数为树的度树的深度(高度):树中结点的最大层数,从1开始。
1.2 二叉树分类
满二叉树:一颗高度为h,并且含有2^h-1个结点的二叉树称为满二叉树。即树中每一层都含有最多的节点。除叶子节点每个节点的度都为2。
完全二叉树:当高度为h,具有n个结点的二叉树,...
分类:
其他好文 时间:
2016-07-17 00:46:59
阅读次数:
358
堆排序 堆排序时间复杂度为O(nlgn),且具有空间原址性,只需要常数个额外的元素空间存储临时数据。但堆排序是不稳定的算法,即对相等的两个元素,排序后不能保证他们的顺序与原始数据的顺序相同。 1.堆 堆是一个数组,可以把它看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素,除最底层外,该 ...
分类:
编程语言 时间:
2016-07-14 19:04:34
阅读次数:
164
大根堆的定义:1 大根堆是一个大根树 2 大根堆是一个完全二叉树 所以大根堆用数组表示是连续的,不会出现空白字段。 对于大根堆的插入 对于大根堆的插入,可以在排序前确定大根堆的形状,可以确定元素5从位置6插入,那么比较元素5和位置3的元素2, 元素5比元素2大,将2下移。接着比较元素5和元素20,一 ...
分类:
其他好文 时间:
2016-07-13 20:27:52
阅读次数:
215
在存储满二叉树或近似满二叉树时,按节点层次顺序存储是个不错的主意,我们从根节点开始,逐层由左到右扫描各个节点,依次将节点数据存放到指定的数组中,如果偶尔遇到空的子节点,就用特殊符号来表示。
这个树结构已接近满二叉树了,如果使用按层次顺序存储,将会更简单,更节省空间。按照上面的方法,这棵树所对应的存储结构应该是:
['A', 'B', 'E', 'C', 'D', '#', 'F']
其...
分类:
编程语言 时间:
2016-07-13 17:15:03
阅读次数:
233