- 博客(7)
- 收藏
- 关注
原创 深入解析红黑树:平衡与插入全攻略
红黑树是一种自平衡二叉搜索树,具有以下特性:每个节点为红或黑,根节点和叶子节点为黑,红色节点的子节点必须为黑,且从任一节点到其叶子节点的路径包含相同数目的黑色节点。插入操作时,新节点默认为红色以避免全局调整,主要通过变色和旋转(单旋或双旋)来维持平衡。相比AVL树,红黑树对平衡性要求较低,旋转次数更少,综合性能更优,广泛应用于C++ STL的map和set等数据结构。插入时间复杂度为O(logN),适合频繁增删的场景。
2025-08-30 14:05:22
545
原创 深入解析AVL树:平衡与旋转全攻略
本文详细介绍了平衡二叉树(AVL树)的核心概念与实现方法。AVL树通过平衡因子(右子树深度减左子树深度)确保每个节点的左右子树高度差不超过1,当绝对值大于1时通过四种旋转操作(左单旋、右单旋、左右双旋、右左双旋)进行平衡调整。文中提供了完整的C++代码实现,包括节点结构、旋转操作和平衡因子更新逻辑。相比普通二叉搜索树,AVL树通过额外维护成本(O(logn))换取最坏情况下O(logn)的稳定操作时间,适用于需要高性能查询的场景(如通讯录管理、词频统计)。文章还分析了AVL树的优缺点。
2025-08-02 17:24:42
1562
1
原创 STL:栈、队列、双端队列、优先级队列特性与接口详解
本文介绍了STL中的容器适配器及其应用。首先回顾了容器分类,重点讲解了栈(stack)和队列(queue)的特性及接口使用,通过代码示例演示了它们的操作特点。接着分析了双端队列(deque)作为底层容器的优势,并详细解析了优先级队列(priority_queue)的底层实现原理,包括二叉堆结构和调整算法。最后提供了使用优先级队列解决算法问题的示例。文章系统性地阐述了这些数据结构的特点、实现原理和实际应用,对理解STL容器适配器有较好的参考价值。
2025-08-01 17:35:49
1891
1
原创 深入解析C++类与对象核心概念
类是自定义数据类型,是c语言的结构体进化而成的而对象是类实例化出的,用数据类型定义一个变量,可以对比int/char实例化出一个对象来进行理解!int _month;int _day;受先需要解释的一点是_符号表示是成员变量,定义为私有的,class为定义类的关键字,就像在c语言中定义一个结构体需要用struct一样,Date为类的名字,{}好重为类的主题,花括号后的分号;不能省略,如果省略,编译器会报错。类中的函数称为成员函数。
2025-07-27 17:45:17
4942
1
原创 最全解析之二叉搜索树:高效查找与增删
二叉搜索树是一种特殊的二叉树,其左子树所有节点值小于根节点,右子树所有节点值大于根节点。主要操作包括:1.插入-空树直接插入根节点,非空树按大小关系查找位置插入;2.查找-从根节点开始比较,最多查找树高次;3.删除-分五种情况处理,最复杂的是左右子树都不为空时需找右子树最小节点替代。二叉搜索树中序遍历结果有序,可应用于键值对存储(如学生成绩管理系统),时间复杂度一般为O(logn),最坏情况下退化为链表时为O(n)。后续可发展为AVL树和红黑树等平衡二叉搜索树。
2025-07-27 16:29:50
1735
1
原创 解密C/C++指针:内存操作的艺术
《C/C++指针详解:从基础到数组指针与指针数组》 本文系统讲解了指针的核心概念与应用。首先介绍了普通指针(整型指针)的基础原理,包括地址操作和解引用;其次解析了字符指针对字符串的存储方式;重点区分了数组指针(指向整个数组的指针)和指针数组(存储指针的数组),并通过内存地址变化和二维数组案例阐明其差异;最后简述了动态内存管理的优势。文章通过代码示例和内存分析,揭示了指针运算的本质是指向类型大小与偏移步数的乘积,帮助读者深入理解指针机制。
2025-07-07 17:49:50
1450
原创 STL—vector的使用与迭代器失效解析:
迭代器的底层实际就是一个指针,因此迭代器失效实际上就是迭代器底层对应指针所指向的空间被销毁了,而使用(访问)一块已经被销毁的空间,造成的后果就是引发程序崩毁。如图所示,插入1-8,然后调用resize,将空间大小调整为10,新增元素被初始化为0,所以打印出来的结果是1、2、3、4、5、6、7、8、0、0。区别:resize直接改变容器中元素的数量,如果新的大小大于当前的大小,则新增元素会被初始化,如果新的大小小于当前的大小,则后面的元素会被删除。如下图所示,输出结果为一个三行四列,元素大小为0的矩阵。
2025-06-07 10:18:32
2001
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人