![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 94
Faiz..
分享学到的C/C++知识
展开
-
用红黑树封装实现map和set
map和set都是基于红黑树实现的。红黑树是一种自平衡的二叉搜索树,它保持着良好的平衡性能,插入、删除、查找的时间复杂度都是O(log n)。在C++ STL中,map和set都是使用红黑树作为底层数据结构来实现的。原创 2024-03-15 16:45:23 · 1000 阅读 · 2 评论 -
数据结构:红黑树的模拟实现
前面的文章我们讲解了AVL树,AVL树是一棵绝对平衡的二叉搜索树,其要求每个节点的左右子树高度差的绝对值都不超过1,这样可以保证查询时高效的时间复杂度。但是AVL树为了保持平衡要旋转来操作,在删除时有可能要一直旋转到根部,效率就会比较低下,如果数据的个数为静态的(即不会改变),可以考虑AVL树,如果一个结构经常修改,那么红黑树是个不错的选择。原创 2024-03-13 21:23:53 · 1170 阅读 · 1 评论 -
数据结构:AVL树
两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右 子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。原创 2024-03-07 20:07:59 · 1215 阅读 · 3 评论 -
数据结构:二叉搜索树(非递归实现)
二叉搜索树(Binary Search Tree,简称BST)是一种特殊的二叉树,其中每个节点的值大于其左子树中所有节点的值,小于其右子树中所有节点的值。如果不为根节点,那么需要判断该节点是prev(该节点的父节点)的左孩子还是右孩子,让对应的指针指向该节点的左孩子即可。不为根节点,判断该节点是prev(该节点的父节点)的左孩子还是右孩子,让对应的指针指向该节点的右孩子即可。如果为根节点,那么直接让该节点的左孩子变为根节点即可。如果为根节点,同上操作,只是变为对该节点右孩子的操作。原创 2024-03-01 15:18:32 · 1043 阅读 · 1 评论 -
数据结构:二叉树
的。原创 2023-10-15 23:12:21 · 43 阅读 · 2 评论 -
数据结构:顺序表和链表
静态顺序表主要适用于明确知道需要存放多少数据的场景,但是在实际不一定知道数据的个数,定长数组开大了浪费空间,开小了不够存放,所以一般使用动态顺序表。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。给定一个链表,每个结点包含一个额外增加的随机指针,该指针可以指向链表中的任何结点或空结点。新链表是通过拼接给定的两个链表的所有结点组成的。编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前。、非顺序的存储结构,数据元素的。原创 2023-09-08 21:55:34 · 83 阅读 · 2 评论 -
数据结构:栈和队列
栈和队列是一种重要的数据结构,本文章将介绍栈和队列的结构以及一些关于栈和队列的面试题。原创 2023-08-31 20:49:07 · 60 阅读 · 3 评论