码迷,mamicode.com
首页 >  
搜索关键字:二叉    ( 13085个结果
算法5-1:平衡查找树之二三树
平衡查找树的目标是实现查找、插入、删除操作在最坏情况下的复杂度均为logN。 本节将介绍二三查找树。 二三树中有两种节点: 二节点对应一个键,有两个子节点 三节点对应两个键,有三个子节点 二三查找树非常平衡,每个空节点到根节点的距离都是一样的 。 查找操作 在二三树中查找一个键的时候有以下...
分类:其他好文   时间:2014-06-19 11:32:21    阅读次数:157
算法5-2:红黑树
红黑树就是将二三树表示成二叉树的形式,极大地简化了算法。 红黑树的基本思想就是将二三树中的三节点表示成两个二节点,而这两个二节点之间使用红色的连接,普通连接使用黑色的连接。 红黑树中的每个节点都有以下性质: 没有一个节点同时拥有两个红连接 每个空节点到根节点路径上黑色连接的数量都是相同的 红连接只会出现在左边 下图展示...
分类:其他好文   时间:2014-06-16 11:53:53    阅读次数:164
算法5-3:B树
我们知道硬盘的读取速度是很慢的,那么如何实现文件系统才能让计算机更加高效呢?这时候就要引入B树的概念了。B树是平衡二叉树的推广形式,它的每个节点可以有很多的子节点。子节点的数量取决于扇区的大小。因为硬盘读取一个扇区的开销是最节省时间的。 下图展示了B树的样子,每个节点可以有多个子节点。 平衡树的应用 红黑树有着广泛的应用 ...
分类:其他好文   时间:2014-06-16 11:52:50    阅读次数:146
算法5-4:1d范围查找
有一个整数集合,求所有介于x到y之间的所有整数 实现方法 非顺序数组:复杂度是N,比较慢 顺序数组:查找操作的复杂度是lgN,插入操作的复杂度是N 二叉查找树:复杂度是logN,比较快 代码 下面这段代码用于统计lo到hi之间的整数个数 public int count(Key lo, Key hi) { i...
分类:其他好文   时间:2014-06-16 11:51:47    阅读次数:194
平衡二叉树
平衡二叉树又称AVL树。它或者是颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上全部节点的平衡因子仅仅可能为-1,0,1.仅仅要二叉树上有一个节...
分类:其他好文   时间:2014-06-15 22:39:42    阅读次数:237
堆排序
堆排序(heapsort)是一种原地(in place)排序算法, 它的时间复杂度是O(nlgn). 堆数据结构不只是在堆排序中有用,它还可以构成一个有效的优先队列。堆数据结构是一种数组对象,它可以被视为一颗完全二叉树。如图: Aheap-size是放在A中堆的元素个数。根据数组节点的索引,我们.....
分类:其他好文   时间:2014-06-15 21:27:58    阅读次数:239
剑指offer (19) 二叉树镜像 对称二叉树
题目:输入一个二叉树,输出其镜像。BinTreeNode* ReverseTree(BinTreeNode* pRoot){ if (pRoot == NULL) return NULL; BinTreeNode* pLeftReverse = ReverseTree(pRoot->le...
分类:其他好文   时间:2014-06-15 19:40:38    阅读次数:149
算法:由后序遍历和中序遍历求前序遍历
假设一棵二叉树的后序遍历序列为 DGJHEBIFCA ,中序遍历序列为 DBGEHJACIF ,求前序遍历。   整体思路是这样的,由后序遍历找到每个节点,然后由中序遍历判断左右子树,将整个二叉树还原后写出前序遍历。 后序遍历的顺序知道,最后一个A是二叉树的根节点, 然后把中序遍历从A分成两段,A左边的是左子树,A右边的是右子树, 结果如下   ...
分类:其他好文   时间:2014-06-15 17:19:24    阅读次数:251
LeetCode——Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 此题和求二叉树的最短路径几乎一模一样。 public int...
分类:其他好文   时间:2014-06-15 16:36:40    阅读次数:209
【啊哈!算法】算法11:堆——神奇的优先队列(上)
堆是什么?是一种特殊的完全二叉树,就像下面这棵树一样。         有没有发现这棵二叉树有一个特点,就是所有父结点都比子结点要小(注意:圆圈里面的数是值,圆圈上面的数是这个结点的编号,此规定仅适用于本节)。符合这样特点的完全二叉树我们称为最小堆。反之,如果所有父结点都比子结点要大,这样的完全二叉树称为最大堆。那这一特性究竟有什么用呢?         假如有14个数分别是9...
分类:其他好文   时间:2014-06-15 08:03:16    阅读次数:223
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!