数据结构、栈和队列、树和二叉树
1.递归recursion
核心:自己调自己
注意:有一个出口,不停地向出口靠近
2.二分查找
首先,查找表必须使用顺序存储结构;
其次,查找表必须按关键字大小有序排列。
思路:起始下标 终点下标 中间下标
3.数据结构
概念:
数据结构=逻辑结构+存储结构+(在存储结构上的)运算/操作
线性结构:"一对一"
树状结构:“一对多”
网状结构:“多对多”
储存结构:
顺序结构:把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。
链式存储结构:数据元素的存储对应的是不连续的存储空间,每个存储节点对应一个需要存储的数据元素。每个结点是由数据域和指针域组成。元素之间的逻辑关系通过存储节点之间的链接关系反映。逻辑上相邻节点物理上不必相邻。
索引存储结构:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
比如图书、字典的目录
散列存储结构:根据结点的关键字直接计算出该结点的存储地址,比如Java中的HashSet、HashMap底层就是散列存储结构。这是一种神奇的结构,添加、查询速度快。
4.线性表
定义:线性表是n个类型相同数据元素的有限序列,通常记作(a0 , a 1 , …a i-1 , a i , a i+1 …,a n-1 )。
1.相同数据类型
2.序列(顺序性)
3.有限
顺序表----顺序存储结构
链表----链式存储结构
双向链表
循环链表
5.栈和队列
栈的定义
栈(stack )又称堆栈,它是运算受限的线性表
队列定义
队列(queue)简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。
双端队列deque
所谓双端队列是指两端都可以进行进队和出队操作的队列,如下图所示,将队列的两端分别称为前端和后端,两端都可以入队和出队
6.树和二叉树
树:
树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。
树(tree )是 n(n ≥ 0)个结点的有限集。它
1) 或是一棵空树(n = 0),空树中不包含任何结点。
2) 或是一棵非空树(n > 0),此时有且仅有一个特定称为根(root )的结点;
二叉树:
每个结点的度均不超过 2 的有序树,称为 二叉树(binary tree)
满二叉树:
高度为k并且有 2k+1 -1 个结点的二叉树。
满二叉树中,每层结点都达到最大数,即每层结点都是满的,因此称为满二叉树。
完全二叉树:
若在一棵满二叉树中,在最下层从最右侧起去掉相邻的若干叶子结点,得到的二叉树即为完全二叉树。
满二叉树必为完全二叉树,而完全二叉树不一定是满二叉树
二叉树的存储结构
二叉树存储结构有两种:顺序存储结构和链式存储结构。更多使用链式存储结构
链式存储结构
设计不同的结点结构可构成不同的链式存储结构。
二叉查找/搜索/排序树 BST (binary search/sort tree)
或者是一棵空树;
(1)若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;
(2)若它的右子树上所有结点的值均大于它的根节点的值;
(3)它的左、右子树也分别为二叉排序树。
注意:对二叉查找树进行中序遍历,得到有序集合。
平衡二叉树(Self-balancing binary search tree)
自平衡二叉查找树 又被称为AVL树(有别于AVL算法),它是一 棵空树
红黑树
R-B Tree,全称是Red-Black Tree,又称为"红黑树",它一种平衡二叉树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。
红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
注意:
(01) 特性(3)中的叶子节点,是只为空(NIL或null)的节点。
(02) 特性(5),确保没有一条路径会比其他路径长出俩倍。因而,红黑树是相对是接近平衡的二叉树
7.图
图的基本概念:多对多关系,图(graph)是一种网状数据结构,图是由非空顶点集合和一个描述顶点间关系的集合组成。
图的存储结构
可以采用顺序存储结构和链式存储结构,更多采用链式存储结构
邻接表:链表 链式存储结构
数据结构、栈和队列、树和二叉树相关推荐
- DSt:数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构、数据运算【十大排序/四大查找-图三大搜索-树三大遍历】、高级算法【贪心/分治/动态规划】之详细攻略
DSt:数据结构的简介.最强学习路线(逻辑结构[数组-链表-栈和队列/树-图-哈希].物理结构[元素/关系].数据运算[十大排序/四大查找-图三大搜索-树三大遍历].高级算法[贪心/分治/动态规划]) ...
- 《数据结构与算法》——树与二叉树之遍历总结
<数据结构与算法>--树与二叉树之遍历总结 树与二叉树部分计划分为三次进行复习总结,第一次为基本概念和二叉树的遍历,第二次内容为线索二叉树以及树和森林,第三次为树与二叉树的应用. 目录 & ...
- 数据结构栈和队列_使您的列表更上一层楼:链接列表和队列数据结构
数据结构栈和队列 When you want to store several elements somewhere in a program, the go-to data type is an a ...
- 数据结构栈与队列的应用之汽车轮渡问题——自己的一些理解
本题摘自王道数据结构栈与队列的应用的课后题,题目如下: 某汽车轮渡口,过江渡船每次能载10辆汽车过江.过江车辆分为客车类和货车类,上渡船有如下规定:同类车先到先上船,客车先于货车上船,且每上4辆客车, ...
- 数据结构——栈与队列相关题目
数据结构--栈与队列相关题目 232. 用栈实现队列 思路 225. 用队列实现栈 1.两个队列实现栈 2.一个队列实现栈 20. 有效的括号 思路 1047. 删除字符串中的所有相邻重复项 思路 1 ...
- 数据结构——非线性结构(树与二叉树)
文章目录 一. 非线性结构的概述 二. 树的基本概念 1. 树的定义 2. 专业术语 3. 树的性质 三. 树的分类 1. 一般树 2. 二叉树(是有序树) 2.1 概念 2.2 分类 1. 一般二叉 ...
- 王道——数据结构——栈和队列(1)
系列文章目录 其他章节相关文章 王道--数据结构--树与二叉树(1) 本章节其他相关文章 文章目录 系列文章目录 其他章节相关文章 本章节其他相关文章 前言 一.栈的顺序存储 一.顺序栈 二.共享栈 ...
- 【Python数据结构系列】☀️《树与二叉树-基础知识》——知识点讲解+代码实现☀️
文章目录 数据结构之树和二叉树 第一部分 树和二叉树的基础知识 1.树和二叉树的定义 1.1 树的定义 1.2 树的基本术语 1.3 二叉树的定义 2.二叉树的性质和存储结构 2.1 二叉树的性质 2 ...
- 王道408数据结构——第五章 树与二叉树
文章目录 一.树的基本概念 树的性质 二.二叉树 满二叉树 完全二叉树 二叉排序树 平衡二叉树 二叉树的性质 完全二叉树的性质 三.二叉树的储存结构 顺序储存 链式存储 四.树的储存方式 双亲表示法 ...
- 数据结构——栈和队列
目录 1.栈 1.1栈的基本概念 1.2栈的顺序存储实现 1.3共享栈 1.4栈的链式存储实现 1.5栈在括号匹配中的应用 1.6栈在表达式求值中的应用 1.6.1中.前.后缀表达式 1.6.2后缀表 ...
最新文章
- 孙立岩 python-basic: 用于学习python基础的课件(一二三四)
- Hibernate List集合映射
- 模拟网页行为之实践篇
- Linux的实际操作:搜索查找类的实用指令(find locate grep 管道符|)
- nginx基于htpasswd安全验证
- 20190830每日一句
- 2019最新私塾在线高级java软件架构师培训项目实战(完整)
- Thinkpad官方推荐的驱动安装顺序
- 【CAD】机械类制图实用功能总结
- Oracle学习3:dual详解
- 作业1:从产品经理人的角度规划项目
- 如何加强水电站班组安全建设?
- aardio - 【库】webp图片转换
- 3 photolemur 样式下载_Photolemur 3
- c4droid编译java_Windows下的java控制台已经完成,Linux相信很简单了
- 【JavaScript】Ajax
- unity《愤怒的小鸟》初级案例笔记
- pycharm中LeetCode插件乱码问题
- 取消参考文献自动编号_利用Word自动维护参考文献的编号和引用
- FFT user guide -QII 的使用注意要点