数据结构与算法
文章平均质量分 79
数据结构与算法学习笔记
缘友一世
我是缘友一世博主,热爱技术、热衷于分享。我的博客专注于计算机科学和软件开发领域的学习和实践经验。在博客中,你可以找到各种编程语言的深入解析和实用技巧。我致力帮助读者更好地理解和应用技术。同时,我也关注技术行业的发展趋势和前沿研究。感谢您的关注和支持!部分文章内容辅助使用gpt等人工智能编辑,如果出现错误之处,请指正
展开
-
高级树结构之红黑树初识
通过在插入几点时维护数的平衡,这样就不会出现极端情况,使得整棵树的查找效率急剧降低。但是这样造成系统开销过大,因为一旦平衡因子的绝对值超过一就失衡,这样没插入一个节点就可能可能导致失衡。那么有没有一种不能不那么严格的规则来保证平衡?红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构。RudolfBayerRudolfBayer经典用途是实现关联数组红黑树也是二叉查找树的一种,有红色的结点、有黑色的结点红黑树的五大规则。原创 2023-01-13 18:21:56 · 282 阅读 · 0 评论 -
高级树结构之平衡二叉树(ALV树)
在数据有序的情况下,进行动态二叉树的创建时,二叉树会变得非常长。那么在进行查找某个节点的时候,就会变成线性查找。一颗左子树和右子树的深度之差(平衡因子)的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树的二叉排序树。注意:空树也是一颗平衡二叉树平衡二叉树的性质:平衡二叉树是一颗二叉查找树任意节点的左右子树也是一颗平衡二叉树从根节点开始,左右子树的高度差不超过1,否则视为不平衡二叉树上结点的左子树的高度减去右子树高度得到的结果为该节点的平衡因子。原创 2023-01-13 17:29:10 · 984 阅读 · 1 评论 -
高级树结构之二叉查找树
二叉查找树【二叉搜索树或是二叉排序树】左子树中所有结点的值,均小于其根结点的值右子树中所有结点的值,均大于其根结点的值二叉搜索树的子树也是二叉搜索树二义查找树满足左边一定比当前结点小,右边一定比当前结点大比如需要在这颗树种查找值为15的结点从根结点18开始,因为15小于18,所以从左边开始找接着来到10,发现10比15小,所以继续往右边走来到15,成功找到。原创 2023-01-10 15:01:41 · 231 阅读 · 0 评论 -
高级树结构之线索化二叉树
线索化:将一颗二叉树的结点指向为空的指针,线索化为某一种顺序遍历的的指向下一个按顺序的结点的指针一颗为顺序化的二叉树的前序遍历顺序。原创 2023-01-09 14:36:08 · 291 阅读 · 0 评论 -
二叉树先、中、后遍历递归+非递归
作者水平有限,全部的代码是学习前人+部分原创不要搬代码,一定要借鉴学习,自己动手!!!原创 2022-12-21 17:10:45 · 537 阅读 · 0 评论 -
图的初识·遍历
从A结点开始探索,A入队列。队列状态:A然后,再将其下一个结点B入队,A出队。队列状态:B 从A结点开始探索,A入队列。\\ 队列状态:A\\ 然后,再将其下一个结点B入队,A出队。\\ 队列状态:B\\从A结点开始探索,A入队列。队列状态:A然后,再将其下一个结点B入队,A出队。队列状态:B将B的下一级结点入队队列状态:B−>H−>G−>K将B出队队列状态:H−>G−>K 将B的下一级结点入队\\ 队列状态:B->H->G->K\\ 将B出队\\ 队列状态:H->G->K将B的下一原创 2022-12-03 09:45:27 · 433 阅读 · 0 评论 -
图的初识·存储结构
对于无向图,邻接矩阵的第iii行非000(或非∞\infty∞)的个数就是第iii个顶点的度对于有向图,邻接矩阵的第iii行非000(或非∞\infty∞)的个数就是第iii个顶点的出度(横向表示出度,纵向表示入度)邻接矩阵:适合稠密图邻接表:适合稀疏图。原创 2022-11-30 17:45:41 · 720 阅读 · 1 评论 -
图的初识·基本概念
G=(V,E)V=A,B,C,D,=A,B,C,D,EE=,,,,G=(V,E)G′=(V′,E′)V′V′。原创 2022-11-29 23:21:18 · 286 阅读 · 0 评论 -
树和二叉树练习题
分析:该问题可以通过层序遍历的方法来解决.与6.47相比,作了一个修改,不管当前结点 是否有左右孩子,都入队列.这样当树为完全二叉树时,遍历时得到是一个连续的不包含空 指针的序列.反之,则序列中会含有空指针.二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。最常用的是三种:前序法(即按N L R次序),后序法(即按。,Tm,每个集合又都是树,此时结点T称为Ti的父结点,Ti称为T的子结点(1≤i≤m)。(C)有多种,但根结点都没有左孩子 (D)有多种,但根结点都没有右孩子。原创 2022-11-24 13:36:37 · 947 阅读 · 1 评论 -
C树和森林的研究学习随记【一】
一颗满二叉树一定是一个课完全二叉树。完全二叉树一定不是满二叉树【但完全二叉树是一颗少了叶子的满二叉树】。原创 2022-11-23 21:30:02 · 417 阅读 · 0 评论 -
数据结构串和数组练习题
设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是:( D )(1)GetHead【((a,b),(c,d))】== (a, b);//头元素不必加括号。若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为。原创 2022-11-19 20:42:38 · 1641 阅读 · 0 评论 -
【数据结构】栈和队列课后练习题
判定一个栈ST(最多元素为m0)为空的条件是( B )原创 2022-11-18 23:08:44 · 917 阅读 · 0 评论 -
数据结构绪论、顺序表课后练习题
( ❎ )1. 链表的每个结点中都恰好包含一个指针。链表不具有的特点是_________. ( B ),判定该表为空表的条件是( B )的操作是( ).( D ),正确的操作是:( B )。A.插入、删除不需要移动元素。D.所需空间与线性长度成正比。时须修改指针( A )。C.不必事先估计存储空间。原创 2022-11-18 16:36:46 · 497 阅读 · 0 评论 -
数组、广义表的认识
数组:按一定格式排列起来的 具有相同类型的数据元素的集合一维数组:若线性表中的数据元素为非结构的简单元素则称为一维数组线性结构 定长的线性表声明格式:数据类型 变量名称【长度】广义表(又称列表Lists)是n>=0个元素a0,a1,..ana0,a1,..an的有限序列,其中每一个a;或者是原子或者是一个广义表例:中国举办的国际足球邀请赛参赛队名单可表示如下。原创 2022-10-30 11:49:09 · 491 阅读 · 0 评论 -
C语言数据结构串【BF\KMP算法】
串的顺序存储结构//存储串的一维数组 int length;//串的当前长度 } SString;255//存储串的一维数组 int length;//串的当前长度 } SString;串的链式存储结构–块链结构//串的头指针和尾指针 int curlen;//串的当前长度 } LString;//字符串的块链结构80//串的头指针和尾指针 int curlen;//串的当前长度 } LString;//字符串的块链结构。原创 2022-10-29 20:13:25 · 889 阅读 · 0 评论 -
链表【java版】
package 数据结构 . Day03;/*** @author 缘友一世*/ //公共代码 抽象类 public abstract class AbstractList < E > implements List < E > {/*** 元素个数* @return} /*** 是否包含某个元素* @return} /*** 判断是否为空* @return true空| false 非空。原创 2022-10-06 22:38:19 · 174 阅读 · 0 评论 -
队列的初识和实现
【代码】队列的初识和实现。原创 2022-10-05 22:23:53 · 128 阅读 · 0 评论 -
栈·初识入门
【代码】栈·初识入门。原创 2022-10-04 16:23:12 · 678 阅读 · 0 评论 -
带头双向循环链表的基本入门
【代码】带头双向循环链表的基本入门。原创 2022-10-03 23:11:20 · 170 阅读 · 0 评论 -
经典环形链表的思路和结论
【代码】经典环形链表的思路和结论。原创 2022-10-02 11:57:07 · 276 阅读 · 4 评论 -
单向链表·初识【c语言】
【代码】单向链表·初识【c语言】原创 2022-09-18 22:59:12 · 341 阅读 · 0 评论 -
线性表与链表的详解
双向链表VS动态数组动态数组:开辟、销段内存空间的次数相对较少,但是可能造成空间的浪费(通过缩容解决)双向链表:开辟、销毁内存空间的次数相对较多,但不会造成空间的浪费如果需要频繁在末尾添加删除操作,动态数组和双向链表均可如果频繁需要在头部讲行增删操作,建议使用双向链表如果在任意位置增删元素建议使用双向链表如果频繁查询(随机访问元素)建议使用动态数组。原创 2022-09-02 22:50:11 · 1043 阅读 · 0 评论 -
数据结构笔记01
提示:根据题目的提示:其他数字都出现了两次,想到可以利用异或的方法将出现两次数字变为0,而0与两个出现一次的数字异或得到一个新的数字,但在其二进制位上的能有规律可循。请找出这两个只出现了一次的数字。要求时间复杂度O(n),空间复杂度O(1)定义:算法的时间复杂度是一个函数,定量描述该算法的运行时间。大O的渐进表示法:大O符号(Big O notation):适用于描述函数渐进行为的数学符号。思路梳理:因为要求了时间复杂度是O(n),所以排除冒泡排序的方法。T(n)=logn 最好的情况:O(1)...原创 2022-09-01 16:58:39 · 225 阅读 · 0 评论 -
啊哈wrong
文章目录枚举枚举#include <stdio.h>#include <stdlib.h>int main(){ char a[20][21]={ "#############", "#GG.GGG#GGG.#", "###.#G#G#G#G#", "#.......#..G#",原创 2022-02-26 22:00:38 · 86 阅读 · 0 评论 -
啊哈算法学习
算法入门好书,本片大部分内容来自书本,开篇图片来自JohnnyDeng94《啊哈!算法》知识点汇总https://blog.csdn.net/asd501823206/article/de,主要用于自用笔记,本书没有将特别高深的算法,而是以和你对话、讲故事的方式,从排序、各种数据结构,到树、图的基本算法,进行了很详细的讲解。在看这本书之前,我对树、图有一种天然的敬畏,这种敬畏源自于对于算法了解的太少,说白了就是无知。而这本书的讲解,很自然的让你理解一个又一个例子,理解一步又一步,最终彻底明白这些算法的意义。转载 2022-01-22 15:30:11 · 199 阅读 · 0 评论