数据结构(1)链接https://blog.csdn.net/Z_timer/article/details/105595519(多图预警)

数据结构(2)链接https://blog.csdn.net/Z_timer/article/details/106457448

目录

树的定义

二叉树

求完全二叉树的高度、深度

一些性质

树与二叉树的转换

树转森林

树的遍历(该章节最上面的链接有)

递归

树的遍历

考点总结

线索二叉树

二叉树的估计

根据表达式建立二叉树

哈夫曼树

根据遍历序列画树

图的定义

图的遍历

最小生成树、最短路径、拓扑排序、关键路径

排序

堆排序

外部排序

查找

顺序查找

折半查找

分块查找

二叉排序树

平衡二叉树

B-、B+树

Hash表

算法分析

线性结构

非线性结构

汉诺塔问题

排序算法


考点: 遍历,结点数,森林与树的转换,线索树,树度和结点数,哈夫曼树,。。。。。

题目:https://blog.csdn.net/Z_timer/article/details/109599781?#t20 (可以把这个先放地址栏,有些知识在这些里面,下面一些知识就不多赘述了)

树的定义

一对多的关系

看书把 比较容易理解,以下摘自维基百科

(英语:tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

  • 每个节点都只有有限个子节点或无子节点;
  • 没有父节点的节点称为根节点;
  • 每一个非根节点有且只有一个父节点;
  • 除了根节点外,每个子节点可以分为多个不相交的子树;
  • 树里面没有环路(cycle)
  1. 节点的度:一个节点含有的子树的个数称为该节点的度;
  2. 树的度:一棵树中,最大的节点度称为树的度;
  3. 叶节点终端节点:度为零的节点;
  4. 非终端节点分支节点:度不为零的节点;
  5. 父亲节点父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
  6. 孩子节点子节点:一个节点含有的子树的根节点称为该节点的子节点;
  7. 兄弟节点:具有相同父节点的节点互称为兄弟节点;
  8. 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
  9. 深度:对于任意节点n,n的深度为从根到n的唯一路径长,根的深度为0;
  10. 高度:对于任意节点n,n的高度为从n到一片树叶的最长路径长,所有树叶的高度为0;
  11. 堂兄弟节点:父节点在同一层的节点互为堂兄弟;
  12. 节点的祖先:从根到该节点所经分支上的所有节点;
  13. 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
  14. 森林:由m(m>=0)棵互不相交的树的集合称为森林;

树的逻辑结构存储结构

二叉树

求完全二叉树的高度、深度

求高度一共就这两种,一般不会出现选项中没有这两种情况

一些性质

  空指针数:节点总数+1

推广:

树与二叉树的转换

记住左孩右兄即可

树转森林

树的遍历(该章节最上面的链接有)

递归

https://lyl0724.github.io/2020/01/25/1/

进不去可以再刷新一下,感觉挺不错的

树的遍历

此节也不做讲述,对着图 看着代码一步步来进入函数内部应该能理解吧。

代码看这里https://blog.csdn.net/Z_timer/article/details/113814578#t1、非递归:https://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html

考点总结

线索二叉树

二叉树的估计

https://blog.csdn.net/Z_timer/article/details/109599781#t22 参考第35题,下面的图就是先把遍历后的结果抽象化,如前序遍历肯定是TLR,中序LTR,后序LRT,然后删除对应的分支令其结果一致即可。

根据表达式建立二叉树

利用栈建树https://zhuanlan.zhihu.com/p/126296610

哈夫曼树

概念及代码:https://blog.csdn.net/google19890102/article/details/54848262

评价带权路径:https://blog.csdn.net/qq_29519041/article/details/81428934

题目: https://blog.csdn.net/Z_timer/article/details/109599781#t20,,,49、50、51题

我也不知道为啥 我自己感觉挺简单的 除了算平均带权路径可能会出错

根据遍历序列画树

代码:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/solution/

代码:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/solution/


图的定义

多对多的关系

https://blog.csdn.net/Z_timer/article/details/109330916

例题:

第二问:A2就是数学当中的矩阵乘,然后(0, 3)的含义就是因为

第0行代表从0到其他顶点哪些有边,同理。第3列到其他顶点哪些有变,而(0, 3)是根据对应行对应列相乘并且相加后得到的,(0, k)是下标 即Σ(A(0, k)   ×   A(k, 3)) ,只有对应都为1相乘才为1,即通过k这个顶点可到3,最后相加就是3,这里可以看看天勤的数据结构图的部分

邻接表看出度,逆邻接表看入度

十字链表、邻接多重表

图的遍历

DFS就是尽可能沿着路径访问一条路径上的所有节点,直到该条路径不行再换条路走,BFS就是访问所有邻接点后再访问下一层节点。

代码自行百度或点击该链接。

最小生成树、最短路径、拓扑排序、关键路径

此处参考大链接下的内容,总结的挺全了。

注意下拓扑排序和关键路径里的图怎么画,我非统考 忘记AOV和AOE怎么画了= = ,(AOV activity on vertex;AOE activity on edge)英语全写很清晰了

排序

日常贴链接:https://blog.csdn.net/Z_timer/article/details/109450846

题目:https://blog.csdn.net/Z_timer/article/details/110929131#t9

堆排序

其中的堆虽然跟二叉树差不多,但是其各个根节点必须大于或小于左右子分支。

外部排序

多路归并排序

置换选择排序http://data.biancheng.net/view/78.html

最佳归并树、败者树 http://data.biancheng.net/view/77.html

查找

题目:https://blog.csdn.net/Z_timer/article/details/110929131#t4

顺序查找

ASL1 = (1+2+3+4+5+6)/6 = 7/2 ; ASL(失败) = (7+7+7+7+7+7+7+7)/7 = 7

折半查找

分块查找

二叉排序树

删除指针需要带一个父节点。

如果删除叶子节点,只需要令父节点将其置空。

如果删除单支节点的父节点,即没有左子树或者右子树,则把左右子树直接挂在父亲节点即可,取代原本的节点。

如果删除父节点,则可以到父节点的左孩子,然后一直往右走,因为右边都是比其所在分支的节点大,将最右边的节点赋值到父节点即可;或者右孩子然后一直往左走找到右子树的最小值,然后赋值给父节点。

平衡二叉树

LL和RR就不说了。

LR:给B的右子树进行形象化,即加一个C节点,然后拆分成两个子树,对BC所在树进行RR旋转,然后合并再用LL选择即可,RL同理 只不过取反。

1.2.3.

4.

注意无论怎么变,必须要保持平衡二叉树的性质和二叉排序树的性质,即左小右大,平衡因子为1。

B-、B+树

B(B-)、B+树的插入删除https://www.cnblogs.com/nullzx/p/8729425.html

注意阶数是人为规定的,其不会受到任何影响。如图选A,可能有人误认为5阶必须有个塞满四个空位即B 7

Hash表

注意:不同学校对失败ASL不一样。

构造方法:

直接定址法。

数字分析法:适用关键字位数比较多且表中可能的关键字都是已知的情况。分析的原则是尽量取冲突少的位数段

平方取中法:取关键字平方后的中间几位。

除留余数法:取不大于Hash表表长m的数p除后所得余数为地址。尽量取小于或者大于表长的最大素数

冲突处理:

开放地址法:线性探查法(探测所有位置,易产生堆积现象)、平方探测法(不可能探测表中所有位置,不易堆积)。

链地址法:相同关键字存在链表中

算法分析

线性结构

如果有序的话用折半查找时间复杂度为O(logn)

非线性结构

非递归遍历、层序遍历也为On

邻接矩阵遍历节点:O(n^2)、邻接表遍历节点:O(n+e)

Prim算法:O(n^2)、Kruskal算法:O(eloge)

Dijkstra算法:O(n^2)、Floyd算法:O(n^3)

汉诺塔问题

排序算法

快速排序

由此得到下面的T(i) 、T(n-i-1)

归并排序最好、最坏和平均情况下时间复杂度都为O(nlogn),空间复杂度为O(n)。

希尔排序(考研下的):

堆排序:建堆时间复杂度为O(n)

基数排序(记住就好):

考研数据结构(3)笔记相关推荐

  1. 考研数据结构学习笔记1

    考研数据结构学习笔记1 一.绪论 1.基本概念和术语 2.数据结构三要素 2.1逻辑结构 2.1.1 集合结构 2.1.2 线性结构:一对一 2.1.3 树形结构:一对多 2.1.4 图状结构:多对多 ...

  2. 考研[*数据结构*]学习笔记汇总(全)

    文章目录: 一:预备阶段 二:基础阶段笔记 三:冲刺阶段笔记 四:各章节思维导图 五:题库 来源:王道计算机考研 数据结构 一:预备阶段 之前的数据结构笔记 数据结构--学习笔记--入门必看[建议收藏 ...

  3. 无头单链表删除所有值为e的节点(递归算法)(四)-----考研数据结构题笔记

    ⌚️ 数据结构与算法考研笔记(四)

  4. 考研数据结构学习笔记.树的常考性质

    树的常考性质 树作为重要的数据结构,通常在操作系统,算法等领域起着重要的作用.其特殊性质需要我们了解并且运用,在考研中他们通常会以选择题的形式出现,我们需要熟练掌握并且能够准确地计算. 一.结点数 = ...

  5. 考研数据结构学习与总结笔记---1.1数据结构的基本概念

    考研数据结构学习笔记---王道 数据结构的基本概念 1.数据 2.数据元素 3.数据对象 4.数据类型 5.数据结构 数据结构三要素 1.数据的逻辑结构 2.数据的存储结构 3.数据的运算 回顾与总结 ...

  6. 【专栏必读】王道考研408数据结构万字笔记(有了它不需要你再做笔记了):各章节内容概述导航和思维导图

    其他科目导航 [专栏必读]王道考研408计算机组成原理万字笔记(从学生角度辅助大家理解):各章节导航及思维导图 [专栏必读]王道考研408操作系统万字笔记(从学生角度辅助大家理解):各章节导航及思维导 ...

  7. 王道数据结构课代表 - 考研数据结构 第三章 栈和队列 究极精华总结笔记

    本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对数据结构知识点的理解的总结.希望对新一届的计算机考研人提供帮助!!!   关于对 栈和队列 章节知识点总结的十分全面,涵括了<王道数 ...

  8. 王道数据结构课代表 - 考研数据结构 第五章 树和二叉树 究极精华总结笔记

    本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对数据结构知识点的理解的总结.希望对新一届的计算机考研人提供帮助!!!   关于对 树和二叉树 章节知识点总结的十分全面,涵括了<王道 ...

  9. 二、考研数据结构笔记——绪论(理解数据结构,算法,时间复杂度计算做题技巧)

    一.数据结构基本概念 1.数据:数据是信息的载体.客观事物的一种表现形式.万事万物都能用数据表示出来. 2.数据元素:数据元素是数据的基本单位,一个数据元素有若干个数据项组成 3.数据项:构成数据元素 ...

  10. 考研数据结构笔记--数据结构和算法的基本概念

    考研数据结构笔记--数据结构和算法的基本概念 数据结构的基本概念 算法的基本概念 数据结构的基本概念 数据 数据是对客观事物的符合表示,在计算机科学中是指所有能输入到计算机中并且被计算机程序处理的符合 ...

最新文章

  1. python循环捕捉异常_python异常捕捉以及处理
  2. 2_3 ProxyMode.cpp 代理模式
  3. filereader php,AJAX_File, FileReader 和 Ajax 文件上传实例分析(php),File FileReader 可以干什么? Ajax...
  4. 两个分数化简比怎么化_怎么化行最简形矩阵?
  5. linux --- 部署前后端分离项目
  6. 简书优秀IT专栏作者推荐
  7. Flex中ItemRenderer项目渲染器的两个重要问题
  8. Spring MVC Rest 客户端 RestTemplate 详解
  9. yii2 学习历程——添加验证码
  10. 在tomcat文件夹下启动war项目
  11. 一文读懂二级分销返利模式,商城系统源码机制分享
  12. 【matlab】指数分布、均匀分布、正态分布
  13. 查询ip区间的ip地址的sql语句
  14. 应该怎么正确向老板提加薪呢?
  15. java练习案例_Java版打字练习案例源码
  16. 网易mumu模拟器禁止更新/屏蔽更新方法
  17. Matlab 各种画图函数用法
  18. 马丁富勒微服务论文连接
  19. textContent 和 innerText
  20. java 蓝牙打印_Android - 将收据打印到蓝牙打印机

热门文章

  1. vasp和ms_采用MS建模的基本步骤以及vasp新手入门需要注意的十个简单问题
  2. 支持nvme的linux_linux里的nvme驱动代码分析
  3. JAVA与SQL对应数据类型转换表
  4. JAVA数据库连接池的工作机制
  5. STM32电机库(ST-MC-Workbench)学习记录——电流采样参数设置
  6. pom中子模块project报红,插件运行Process terminated
  7. 安装程序提示本地计算机已存在源,MSI文件安装错误码不再烦
  8. 苹果cms V10模板/MXone Pro自适应影视电影网站模板
  9. 单智能体、多智能体强化学习基本概念及算法分类?为啥提出多智能体强化学习,现状?
  10. 超简单的windows发包工具—小兵以太网测试仪