一棵树是N个节点和N-1条边的集合。因为,每条边都将某个节点连接到它的父亲,而除去根节点外每一个节点都有一个父亲。
二叉树:每个节点都不能有多于两个的儿子。深度平均值为O(logN)。
使二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值大于X的关键字值。
在程序中,一定要记得处理的根节点为空的情况。除了删...
分类:
其他好文 时间:
2014-07-22 23:05:15
阅读次数:
231
前言
RMQ: 数组 a0, a1, a2,..., an-1, 中求任意区间 a[i+1], a[i+2], ..., a[i+k] 的最小值
LCA: 求二叉树中两个节点的最低公共祖先
本文将证明这两个问题可以相互归约为另一个问题。
证明
先通过一个简单的例子来说明问题。见下图:
求 [7 2 8 6] 的最小值...
分类:
其他好文 时间:
2014-07-22 23:01:35
阅读次数:
271
竟然做过原题,一眼看上去竟然没感觉。。。
哈夫曼树定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
1、路径和路径长度
在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规...
分类:
其他好文 时间:
2014-07-22 22:59:32
阅读次数:
293
1 /*小猴子下落 2 时间限制:3000 ms | 内存限制:65535 KB 3 难度:3 4
描述 5
有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。
6 每个内结点上都...
分类:
其他好文 时间:
2014-05-06 01:18:12
阅读次数:
253
利用二叉树实现的排序。将源文件中的数据以中序由小到大的顺序构建二叉树,再写入到另一个文件中(顺便释放为二叉树分配的空间)。这里使用了非递归的算法实现。
分类:
编程语言 时间:
2014-05-06 00:19:39
阅读次数:
353
题目链接:11782 - Optimal Cut
题意:按前序遍历给定一棵满二叉树,现在有k次,可以选k个节点,获得他们的权值,有两个条件:
1、一个节点被选了,他的子节点就不能选了。
2、最终选完后,根到所有叶子的路径上,都要有一个被选的节点。
思路:树形dp,dp[u][k]代表在结点u,可以选k个节点,那么就分两种情况
选u节点,dp[u][k] = node[u];
选子节点之...
分类:
其他好文 时间:
2014-05-03 00:42:27
阅读次数:
331
该文章从优先队列的角度分析并实现了斐波那契堆,并与二叉堆实现的优先队列进行了比较。...
分类:
其他好文 时间:
2014-04-30 22:47:38
阅读次数:
256
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。
二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;...
分类:
其他好文 时间:
2014-04-30 22:44:38
阅读次数:
501
前序:
(二叉)堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个节点与数组中存放该节点值的那个元素对应。
树的每一层都是填满的,最后一层除外。
树的根为a[1] (在这里是从1开始的,也可以从0开始),给定了某个节点的下标i,其父节点为i/2,左二子为2*i,右儿子为2*i+1。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)任何一个...
分类:
其他好文 时间:
2014-04-30 22:15:38
阅读次数:
434
面试也是一门学问,在面试之前做好充分的准备则是成功的必须条件,而程序员在代码面试时,常会遇到编写算法的相关问题,比如排序、二叉树遍历等等。
在程序员的职业生涯中,算法亦算是一门基础课程,尤其是在面试的时候,很多公司都会让程序员编写一些算法实例,例如快速排序、二叉树查找等等。
本文总结了程序员在代码面试中最常遇到的10大算法类型,想要真正了解这些算法的原理,还需程序员们花些功夫。...
分类:
编程语言 时间:
2014-04-30 22:11:39
阅读次数:
356