数据结构知识点小结

1.“树”这一结构中,其存储结构有【孩子表示法】,【父母表示法】,【孩子兄弟表示法】,但它们都是人为定义的,在实际操作中我们使用树时需要结合实际情况创造出合适的树的存储结构,在考虑时间空间复杂度的情况下可以将以上三种操作结合起来。

2. “树”的遍历分为【前序遍历】,【后序遍历】,【层次遍历】;

“二叉树”的遍历分为【前序遍历】,【中序遍历】,【后序遍历】,【层次遍历】;

其中两者的前序层次遍历相同,其余不同,不同之处在于算法的递归程序不同,在编写遍历代码过程中我们不需要去思考怎样去递归,只需要记住这种遍历需要那种代码顺序

3. “二叉树”“树”“森林”三者之间可以相互转换,每个都有着其自己的遍历,转换方法具体在【大话数据结构】6.11节

4.“树”中,创造出符合实际情况的结构以及遍历是十分重要的

5.“树”中,需要用到离散数学的知识,学好离散数学对于数据结构十分重要

6. 二叉排序树:

【1】是二叉树
【2】左子树结点小于根结点值
【3】右子树结点大于根结点值
【4】左,右子树本身是一棵二叉树

丰满树:任意两个非双孩子结点的高度之差绝对值小于等于1的二叉树;

平衡二叉排序树:左子树和右子树都是平衡二叉树,且左子树,右子树高度之差绝对值不超过1;
扩充二叉树:给的一棵二叉树,对于树中不足两个孩子的结点(包括叶子结点),都填上附加结点,使每个结点都有两个孩子结点;

最佳二叉排序树:在n个内部结点和n+1个外部结点构成的所有可能的扩充查找树中,具有最少平均次数,称为最佳二叉排序树;

Huffman树:具有最小带权外部路径长度的二叉树称为Huffman树;

7. 排序

【1】插入排序:直接插入排序,表插入排序,shell插入排序,二分法插入排序
【2】选择排序:直接选择排序,树型选择排序,堆排序
【3】交换排序:冒泡排序,快速排序
【4】归并排序
【5】基数排序

8. 堆排序如何插入

   将待插入元素看作数组,从左至右依次插入,形成二叉树,如4,2,5,8,3,根据**堆排序**可快速找出最小结点(为根结点)
无标题.png

9. 二叉树的遍历算法(递归)

前序遍历

if (t)
{
    printf("%c", t->data);
    preorder(t->lchild);
    preorder(t->rchild);
}

中序遍历

if (t)
{
    inorder(t->lchild);
    printf("%c", t->data);
    inorder(t->rchild);
}

后序遍历

if (t)
{
    postorder(t->lchild);
    postorder(t->rchild);
    printf("%c", t->data);
}

简单来说,二叉树的前、中、后序遍历的printf语句分别在1、2、3位置

10. 队列

队列.png

front 指示队首结点在数组中元素下标;
rear指示队尾结点在数组中元素下标的下一位;
队列从队首删除,从队尾插入;

11. 循环队列

循环队列.png

front与rear同队列意义相同;
当rear=front时,说明再删除一个结点则队列将空或再插入一个结点则队列将满;
为了解决这一问题,可以使数组大小为MAXSIZE的数组,只能存放MAXSIZE-1个元素,则(rear+1)%MAXSIZE=front表示满,rear=front 表示空;

12. 循环单链表

循环单链表.png

好处是可以从任意结点开始访问到链表中任意结点

13. 双链表

双链表.png

好处是可以快速知道一个结点的前驱和后继

14.链式栈

链式栈.png

链式栈的插入和删除只能从top端进行

15.链式队列

链式队列的插入和删除只能分别从front和rear端进行


链式队列.png

16.快速排序

从n个待排序记录中任选一个,将其放在他应该放置的位置上,使前面的数都小于它,后面的数都大于它,再选一个数,重复上述步骤,如46,79,56,38,40,80,95,24
快速排序.png

创建一个数组,将x和其他记录的排序码逐个比较,将排序码不大于x的记录从第1个位置由左向右顺序存放,而将怕排序码大于x的记录从最后一个位置从右向左顺序存放

17.散列存储

是将一组元素通过同一特定函数存储在一数组中,若元素通过函数所构成的结果在数组中位置相同 ,则进行冲突处理;
一般冲突处理方法:开放定址法(线性探索法):就是将冲突元素放入数组的下一空单元;

18.排序

1.直接插入排序:将记录R的排序码与已经排好序的排序码从右向左依次比较,找到R应插入的位置,将该位置以后直到R-1的各记录顺序后移,空位置让R插入

2.二分法插入排序:利用二分法在线性表中进行插入排序

3.表插入排序:主要是在链表中插入排序

4.直接选择排序:将n个待排序记录中选择排序码最小的,与第一个记录进行交换,再从n-1个中选择最小的,与第二个交换

5.树型选择排序:将待排序元素两两组合进行排序,像比赛一样得出最小结果

6.冒泡排序:将所有记录从左到右每相邻两个记录的排序码进行比较,不符合要求,则进行交换,一趟完成后,排序码最大者放在最后,再重复步骤

19.树

树的表示方法:

双亲表示法:数组
孩子表示法:数组,链表,指针
孩子兄弟表示法:指针

树的遍历:前序,中序,后序

20.最小生成树

1.普里姆算法(prim):任意选取一点,加入点集U,构造该点与其他顶点的两栖边,选取最小的一个,加入点集U,则U与U-v的点重新形成了两栖边,选取最小的,重复上述步骤

2.克鲁斯卡尔算法( kruskal):按权非递减顺序连接边,不形成回路,直至由n-1条边为止(n为顶点数)

注:只有图有最小生成树,生成树是指图的一个子图是树,才称为生成树

21.哈夫曼树(Huffman)

具有最小带权外部路径长度,哈夫曼树根据离散数学知识进行构造

哈夫曼树.png

22.二叉排序树

特点:

1.左子树非空,左子树所有结点值均小于根结点值;
2.右子树非空,右子树所有结点值均大于根结点值;
3.它的左、右子树本身又各是一棵二叉排序树;

23.ASL(平均查找长度)

ASL.png

24.树、二叉树的转换

树->二叉树:

1.在所有兄弟结点间加一条连线;
2.除保留其到第一个子女的连线外,撤销到其他子女的连线;
3.将以上得到的树按照顺时针旋转45°;

二叉树->树:

1.将二叉树按逆时针旋转45°;
2.若结点是其双亲的左子女,则把该结点的右子女、右子女的右子女......都与该结点的双亲用线连接起来;
3.去点原二叉树所有双亲到右子女的连线;

25.字符串

字符串的储存方式有顺序表链式表两种;

字符串的模式匹配是指字符串p在字符串t中首次出现的起始位置,有两种:朴素的模式匹配算法、快速模式匹配算法,属于字符串的检索;

26.时间复杂度

时间复杂度.png

27.最短路径和关键路径

最短路径:

Dijkstra:从某个源点到其他各顶点的最短路径(单源最短路径);
Floyd:每一对顶点之间的最短路径;

关键路径:

AOE网:有向图中,顶点表示事件,弧表示活动,弧上的权值表示活动持续时间,这样的有向图称为边表示活动的网;
AOV网:有向无环图中,顶点表示活动,用弧表示活动的优先关系的有向图称为顶点表示活动的网;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容