数据结构与算法第12章 高级数据结构及其实现

这一章要讲的数据结构基本以实用为主。

12.1 自顶而下的伸展树

一些定义

展开:对于树的操作,叶结点X被插入之后,经过旋转使X成为新的树根。

摊还时间:在摊还分析中的一个概念,就是求一个操作的所有情况的平均时间。和O()的时间不同,后者体现的是最糟糕的情况下程序完成所要花费的时间。

P345之中,还有一些内容不是很明白,比如图12.1之中,为什么旋转之后树之间是断开的。我不是很清楚这是怎么回事。

时间: 2024-08-09 06:33:30

数据结构与算法第12章 高级数据结构及其实现的相关文章

数据结构与算法-第12章二叉树和其他树-004求二叉树的最多结点数及对应的层数

1. 1 package chapter12Tree; 2 3 import dataStructures.ArrayQueue; 4 5 //We perform a level-order traversal. To differentiate among nodes at different levels, 6 //we use a unique pointer which serves as an end of level marker. 7 //This pointer is adde

数据结构与算法-第12章二叉树和其他树-002克隆二叉树

例子中二叉树用链表示 1.后序遍历克隆和前序遍历克隆 1 package chapter12Tree; 2 3 //In writing the cloning codes, we assume that we are not to 4 //make clones of the elements in the nodes. Only the tree structure is to be cloned. 5 //In case the elements are also to be cloned

数据结构与算法-第12章二叉树和其他树-003求二叉树的高度

The code to find the tree height using a postorder traversal is given below. 1 public class BinaryTreeHeight 2 { 3 /** @return tree height */ 4 public static int height(BinaryTreeNode t) 5 { 6 if (t != null) 7 {// nonempty tree 8 // find height of le

第12章 高级数据结构及其实现

自顶向下伸展树 1 // SplayTree class 2 // 3 // CONSTRUCTION: with no initializer 4 // 5 // ******************PUBLIC OPERATIONS********************* 6 // void insert( x ) --> Insert x 7 // void remove( x ) --> Remove x 8 // boolean contains( x ) --> Retur

12-1-顺序文件归并-文件-第12章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第12章  文件 - 顺序文件归并 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h        相关测试数据下载  链接? 数据包      

文件-第12章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第12章 文件 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼12 文件       文

Java数据结构和算法(九)——高级排序

春晚好看吗?不存在的!!! 在Java数据结构和算法(三)——冒泡.选择.插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大,那么这三种简单的排序所需要的时间则是我们所不能接受的.接着我们在讲解递归 的时候,介绍了归并排序,归并排序需要O(NlogN),这比简单排序要快了很多,但是归并排序有个缺点,它需要的空间是原始数组空间的两倍,当我们需要排序的数据占据了整个内存的一半以上的空间,那么是不能使用归并排序的. 本篇博客将

Java数据结构与算法(第一章综述)

数据结构和算法能起到什么作用? 数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排.数据结果包括数组.链表.栈.二叉树.哈希表等等.算法对这些结构中的数据进行各种处理,例如,查找一条特殊的数据项或对数据进行排序. 可用于下面三类情况: 现实数据存储 程序员的工具 建模 数据结构的特性: 数据结构 优点 缺点 数组 插入快,如果知道下标,可以非常快地存取 查找慢,删除慢,大小固定 有序数组 比无序的数组查找快 删除和插入慢,大小固定 栈 提供后进先出的方式存取 存取其他项很慢 队列 提供先

数据结构与算法第7章:排序

这一章主要讨论整数的排序. 7.2 插入排序 插入算法是学习排序的最基本的算法.非常简单好理解的算法,大意是,位置X上面的元素前面的元素都是排过序的.当这个元素需要排序时,在前面之中,为X上面的元素找到一个合适的位置. void InsertionSort(int* a, int n) { int i, j; int temp;//用于替换的元素 for (i = 1; i < n; ++i) { temp = a[i]; for (j = i; j > 0 && a[j -