随笔分类 - DataStructure
摘要:线索化二叉树: 线索化二叉树指的是将二叉树中的结点进行逻辑意义上的“重排列”,使其可以线性的方式访问每一个结点。 二叉树线索化后每个结点都有一个线性下标,通过这个下标可以快速访问结点,而不需要遍历二叉树。
阅读全文
摘要:二叉树遍历: 从根结点开始,按照某种次序依次访问二叉树中的所有结点。 前序遍历: 中序遍历: 后序遍历: 层次遍历: 代码实现:
阅读全文
摘要:指路法定位结点: 通过根结点与目标结点的相对位置进行定位 指路法可以避开二叉树递归的性质“线性”定位 在C语言中可以用 bit 位来进行指路: #define BT_LEFT 0 #define BT_RIGHT 1 typedef unsigned long long BTPos; 二叉树的存储结
阅读全文
摘要:树结构模型: 1. 双亲孩子表示法模型 每个结点都有一个指向其双亲的指针 每个结点都有若干个指向其孩子的指针 2. 孩子兄弟表示法模型 每个结点都有一个指向其第一个孩子的指针 每个结点都有一个指向其第一个右兄弟的指针 本质是将普通树转化为二叉树 二叉树的定义: 二叉树是由 n (n >= 0) 个结
阅读全文
摘要:树的定义: 树是一种非线性的数据结构。 树是由 n (n >= 0) 个结点组成的有序集合。 如果 n 为0,称为空树; 如果 n > 0, 则: 有一个结点称为根结点(root),它有直接后继,但没有直接前驱; 除根以外的其他结点划分为 m (m > 0)个互不相交的有限集合 T0, T1, ..
阅读全文
摘要:基本思想: 将两个或两个以上的有序序列合并为一个新的有序序列: 有序序列 V[1] ... V[m] 和 V[m+1] ... V[n] ——> V[1] ... V[n] 这种方法称为2路归并。 将3个有序序列归并为一个新的有序序列,称为3路归并。 将有多个有序序列归并为一个新的有序序列,称为多路
阅读全文
摘要:基本思想: (1)任取待排序序列中的某个数据元素(例如:第一个数据元素)作为基准,按照该元素的关键字大小将整个序列划分为左右两个子序列: 左侧子序列中所有元素都小于或等于基准元素 右侧子序列中的所有元素都大于基准元素 基准元素排在这两个子序列的中间 (2)分别对这个子序列重复实施上述方法,直到所有的
阅读全文
摘要:希尔排序(Shell Sort)也是插入排序的一种。也称为缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 基本思想: 将待排序列划分为若干组,在每一组内进行插入排序,以使整个序列基本有序,然后再对整个序列进行插入排。
阅读全文
摘要:基本思想: 设待排序数据元素序列中的元素个数为n,最多做n-1趟,i = 1, 2, ..., n-1。在第 i 趟中从后向前,j = n-1, n-2, ..., i,两两比较 V[j-1] 和 V[j] 的关键字。如果发生逆序,则交换 V[j-1]和 V[j]。 小结: 选择排序,插入排序以及冒
阅读全文
摘要:基本思想: 当插入第 i (i >= 1)个数据元素时,前面的 V[0], V[1], ..., V[i-1] 已经排好序。这时,用 V[i] 的关键字与 V[i-1], V[i-2], ... 的关键字进行比较,找到插入位置即将 V[i] 插入,原来位置上的对象向后顺移。 直接看代码,仔细想想,其
阅读全文
摘要:基本思想: 每一趟(例如第i趟,i=0,1,2,...,n-2)在后面 n-i 个待排序的数据元素中选出关键字最小的元素,作为有序元素序列的第 i 个元素。
阅读全文
摘要:一般定义:将一组“无序”的数据元素调整为“有序”的数据元素。数学定义:假设含n个数据元素的序列为{R1,R2,...,Rn},其相应的关键字序列为{K1,K2,...,Kn},这些关键字相互之间可以进行比较,即在它们之间存在这样的关系: 按此固有关系将上式记录序列重新排序为: 的操作称为排序。 排序
阅读全文

浙公网安备 33010602011771号