【C++】Set/Map使用红黑树封装 stl库中通过这种巧妙的方法使我们只需要我们实现一棵红黑树就可以复用形成set/map的底层,通过模版的形式让编译器去帮我们生成对应的代码,泛型思维。由以下代码我们可以分析出stl库中的set和map底层都是通过红黑树所实现的。
【C++】二叉搜索树的概念与实现 ⼆叉搜索树中可以⽀持插⼊相等的值,也可以不⽀持插⼊相等的值,具体看使⽤场景定义:map/set/multimap/multiset系列容器底层就是⼆叉搜索树,其中map/set不⽀持插⼊相等 值,multimap/multiset⽀持插⼊相等值。⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树: 左子树的值默认小于根节点,右子树的值默认大于根节点。我们统计一个书中相同单词的个数,Key就是这个单词,而value表示单词的个数。走后序遍历进行析构delete。
【C++】c++的继承 基类和派生类又可以称作父类和子类,派生类可以继承基类中的成员,并且还可以拥有自己的成员,就好比植物是一个大类,而蒲公英也是一种植物拥有植物的特性(也就是植物类的成员属性),同时蒲公英也拥有自己的其他特点,如传播种子的方式;所以基类和派生类的关系如下图: 我们之前学习过每个类域都有着不同的成员,如public,protected,private。对于公共的成员public不管是类域内还是外都可以访问,对于后面两者只有在类域才可以访问,同样的是基类和派生类之间的基础方式也存在这种关系! 基类成员不希望外部访问,
LeetCode 链表OJ题 题目信息及链接:面试题 17.04. 消失的数字 - 力扣(LeetCode) 分析:首先我们看到题目给予了我们一个数组,要求我们找到消失的数字,这个消失的数字指的是所给我们的数组中排序后少掉的数字,比方说示例1中给了最大数3,前面的数字应该是0,1,2,3,但是输入的却是3,0,1,缺少了数字2,那么2就是消失的数字。并且题目要求O(n),意味着我们只可以遍历一遍数组。思路考虑: 既然它给我们的是缺失的数组,那么我们可以创建一个正常的数组,通过对双方数组元素的对比找出缺少的数字,但是这样的时间复杂度就是O
【数据结构】树-堆的详解 在学习了解堆之前,我们需要来了解树,堆是树中的一种特殊情况。 可能我们听到树这个名字时,脑海中就会不由自主的浮现一颗树的形状,树作为数据结构的一环,它的,模型就像是一颗倒着的树一样的结构,每个节点存放着我们需要的数据,示例图如下:如图所示,节点的度指的就是该节点所连接的其他节点个数,图中A节点的度为6,B节点的度为3 叶结点或终端结点又称作叶子,就像一颗树上的叶子一样,后续没有枝干延升了,树中的叶子节点指的就是那些度为0的节点。指的就是那些度不为0的节点如图,A为父亲的话,那么B,C,D,E,F,G都是它
【数据结构】栈和队列 栈是数据结构中的一种线性结构,栈的出入数据只能从一端进行,所以栈的出入规律是先进后出(FILO, First In Last Out )。 栈是一种只有一端出口,并且先进后出的数据结构,实现方面我们可以通过数组或者链表进行实现,他们两种实现各有优劣,小编这边使用的是数组实现,当然为了更加动态的表示栈,我们这边使用动态数组实现。 我们需要实现的功能接口如下: 栈的初始化 我们这边实现栈的初始化有一个分歧,就是我们的top初始化什么?如果初始化为0,那么top代表的就是栈的元素个数,初始化为