随笔分类 - 数据结构
摘要:插入排序(insertion sort)插入排序由P-1趟(pass)排序组成。对于P=1趟到P=N-1趟,插入排序保证从位置0到位置P-1上的元素为已排序状态。插入排序利用了这样的事实:位置0到位置P-1上的元素都是已排过序的。排序过程:如下图,在第P趟,我们将位置P上的元素向左移动到它在前P+1...
阅读全文
摘要:二叉堆(binary heap) 二叉堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。同二叉查找树一样,堆也有两个性质,即结构性和堆序性。对于数组中任意位置i上的元素,其左儿子在位置2i上,右儿子在左儿子后的单元2i+1中,它的父亲在[i/2](向下取整)中。 在一个小顶堆中,对于每一个节点...
阅读全文
摘要:红黑树定义:一棵二叉查找树如果满足下面的红黑性质,则为一棵红黑树: 1)每个结点不是红的就是黑的 2)根结点是黑的 3)每个叶结点是黑的 4)如果一个结点是红的,它的两个儿子都是黑的(即不可能有两个连续的红色结点) 5)对于每个结点,从该结点到其子孙结点的所有路径上包含...
阅读全文
摘要:B树定义:一棵B树T是具有如下性质的有根树: 1)每个节点X有以下域: a)n[x],当前存储在X节点中的关键字数, b)n[x]个关键字本身,以非降序存放,因此key1[x]=2表示。 a)每个非根的结点必须至少有t-1个关键字。每个非根的内结点至少有t个子女。如果树是非空的...
阅读全文
摘要:AVL树(带有平衡条件的二叉查找树)定义:一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树。为什么要使用AVL树(即为什么要给二叉查找树增加平衡条件),已经在我之前的博文中说到过:http://www.cnblogs.com/sage-blog/p/3864640.htmlAVL树...
阅读全文
摘要:前驱和后继本文所述为二叉排序树的前驱和后继,如果想了解二叉排序树的概念,可以参考我的博文http://www.cnblogs.com/sage-blog/p/3864640.html给定一个二叉查找树中的结点,有时候要求找出在中序遍历顺序下它的后继。如果所有的关键字均不同,则某一结X点的后继就是所有...
阅读全文
摘要:二叉排序树(Binary Sort Tree)定义:对于树中的每个结点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值大于X的关键字值。二叉查找树声明: 1 #ifndef _Tree_H 2 3 struct TreeNode; 4 typedef struct Tree...
阅读全文