
数据结构
文章平均质量分 90
持之以恒的天秤
这个作者很懒,什么都没留下…
展开
-
红黑树的学习及情况处理
既然名称叫红黑树,那么就可以通过枚举来区分一个节点的颜色。红黑树节点的定义, _kv(kv){}和AVL树的定义一样,只是多了一个颜色,但是颜色为什么要初始化成红色的呢?我们先来思考一下,插入红色节点或者黑色节点,谁对红黑树的影响最大。来看这张图片,当插入的是黑色节点的时候,每条路径上的黑色节点数量不相同了,那么就需要在其它路径添加一定数量的黑色节点保持性质4;而插入红色节点只会影响当前路径,所以新节点应该是红色。原创 2025-05-11 21:56:45 · 792 阅读 · 0 评论 -
AVL树的学习
假如以parent为根的子树不平衡,即parent的平衡因子为2或者-2,分以下情况考虑。原创 2025-05-11 21:48:06 · 866 阅读 · 0 评论 -
二叉搜索树
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:这个图片不符合二叉搜索树的性质,因为5和7都比10小。而这副图片完全符合二叉搜索树的性质,左子树的值都比根节点小,右子树的值都比根节点大。另外二叉搜索树走中序的话就会排列成升序,所以又叫“二叉排序树”。因此我们判断一棵树是否是二叉搜索树,就可以利用中序的方法。默认情况下二叉搜索树不允许出现重复的值。二叉搜索树的每个节点都要存储它们的左子树节点、右子树节点和节点存储的值。所以它的结构如下,包括构造函数:对于二叉搜索树的类,我们只需要原创 2025-04-29 21:56:20 · 878 阅读 · 0 评论 -
二叉树相关习题
关于二叉树的初级部分我们已经学完了,那么我们就来做一些相关习题来巩固一下所学习过的知识。原创 2025-04-15 21:14:52 · 806 阅读 · 0 评论 -
详细介绍7大排序算法
1.直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用2.时间复杂度:O(N^2)3.空间复杂度:O(1)4.稳定性:不稳定2.2.3 堆排序堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆来进行选择数据。原创 2025-04-14 21:13:17 · 1400 阅读 · 0 评论 -
二叉树的链式结构和遍历(下)
又见面了,小伙伴们。今天我们继续来学习二叉树,今天的内容相对来说比较容易理解,前提是需要你们自己动手画图才会好理解。眼过千遍不如手过一遍。所以小伙伴们要多动手哦。直接开始今天的学习吧。原创 2024-03-23 14:02:24 · 802 阅读 · 1 评论 -
二叉树的初步学习和顺序结构实现(上)
好了,小伙伴们,今天我们就先学到这里,下一节我们学习二叉树的链式结构的实现,今天的知识点一定要好好理解,该画图的时候画图,不要嫌麻烦,要为后面的学习打基础。原创 2024-03-17 14:31:33 · 883 阅读 · 1 评论 -
双向带头循环链表的增删改查
小伙伴们,我们在上一次学习了单链表,最后也提到了链表的分类,总共有8种类型,这次我们就来学习链表最常见的一种类型,就是我们简单来回顾一下。注意:这⾥的“带头”跟前⾯我们说的“头节点”是两个概念,实际前⾯的在单链表阶段称呼不严谨,但是为了同学们更好的理解就直接称为单链表的头节点。带头链表⾥的头节点,实际为“哨兵位”,哨兵位节点不存储任何有效元素,只是站在这⾥“放哨的”“哨兵位”存在的意义:遍历循环链表避免死循环。当链表中只有哨兵位节点的时候,我们称该链表为空链表,即哨兵位是不能删除的。原创 2024-03-03 13:34:21 · 415 阅读 · 0 评论 -
LeetCode题目 移除元素
例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。如果src指向的值不等于val的值,那么就把src指向的值给dst指向的值,然后src和dst都向后走,即就是arr[dst]=arr[src];思路1:遇到等于val的元素,将val的位置之后的元素向前挪动,这个思路感兴趣的小伙伴们可以试试,这个思路应该是大多数人都会想到的。函数应该返回新的长度5, 并且 nums 中的前五个元素为0,1,3,0,4。元素的顺序可以改变。原创 2024-01-23 14:19:47 · 407 阅读 · 0 评论 -
合并两个有序数组
定义q1,q2,q3三个变量,q1的位置是在nums1数组有效长度的位置,即q1=m-1;q2的位置是在nums2数组最后一个元素的位置,即q2=n-1;q3的位置是在nums1数组总长度的位置,即q3=m+n-1。首先让q1和q2进行比较,谁大谁就放在q3的位置,然后让大的和q3都向前走一位,即q1/q2--,q3--,重复上述步骤,如果2个元素相等,那么q1或者q2放在q3的位置,然后向前走一位。将nums2中的数据直接保存到nums1中,通过排序算法对nums1中的所有数据统一进行排序。原创 2024-01-23 15:35:38 · 389 阅读 · 0 评论 -
顺序表的增、删、改、查
/存储数据的底层结构//记录顺序表的空间大小int size;//记录顺序表当前有效的数据个数}SL;细心的小伙伴们发现我也给结构体取了一个别名SL,这样也是为了方便接下来的使用。当然你也可以这样写//存储数据的底层结构//记录顺序表的空间大小int size;//记录顺序表当前有效的数据个数。原创 2024-01-24 21:16:23 · 1186 阅读 · 0 评论 -
单链表的增删改查
小伙伴们,顺序表的增删改查已经学会了,今天我们学习比顺序表还难“亿”点点的链表,也需要增删改查。跟顺序表一样,还是需要创建三个文件SList.h,SList.c和test.c,然后做一些准备工作,具体文件的说明跟顺序表一样,忘了的小伙伴们可以去看一下哦。好了,进入单链表的学习吧。原创 2024-02-02 15:16:37 · 923 阅读 · 0 评论 -
单链表的经典题目练习
给你一个链表的头节点。原创 2024-02-04 15:02:19 · 909 阅读 · 0 评论