C++
文章平均质量分 90
INsisting..
这个作者很懒,什么都没留下…
展开
-
【C++】AVL树
AVL树,全称平衡二叉搜索(排序)树。二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。平衡因子(Balance Factor,简写为bf)原创 2023-09-14 14:15:14 · 346 阅读 · 1 评论 -
【数据结构】Map和Set
我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身,其元素与元素之间并没有什么关联性。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在**数据查找**时比序列式容器效率更高 。原创 2023-09-04 10:48:36 · 864 阅读 · 6 评论 -
【C++】list
1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3.list与forward_list非常相似:主要不同在于forward_list是单链表,只能单方向迭代。4.与其他的序列式容器相比(array,vector,deque),list在任意位置进行插入、移除元素的执行效率更好。原创 2023-08-31 19:00:22 · 864 阅读 · 1 评论 -
【C++】vector
vector是表示可变大小数组的序列容器。> 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。原创 2023-08-14 20:56:36 · 1104 阅读 · 7 评论 -
二叉搜索树与双向链表
二叉树OJ,二叉搜索树转换双向链表问题。原创 2023-08-05 09:03:22 · 1229 阅读 · 1 评论 -
二叉搜索树(二叉排序树)
构造一颗二叉搜索树的过程就是插入过程,找寻要插入元素的位置的规则,将要插入的数据与根节点比较,如果比根节点大,则在右子树中寻找,再将要插入的元素跟右子树的根节点比较,如果大,则继续在右子树中找,反之。二叉搜索树的一个特性,一个节点的所有左子树的值一定比这个节点的值小,一个节点的所有右子树的值比这个节点的值大,所以我们使用中序遍历可以得到一个升序的数组,我们实现的遍历也是利用递归实现中序遍历。7.插入7,由于7小于8,进入左子树3,7又大于3,进入右子树6,7还大于于6,则7为6的右子树。原创 2023-07-29 17:37:32 · 1723 阅读 · 0 评论