![](https://i-blog.csdnimg.cn/direct/d502c2afd003471881677ebb9e480aee.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 85
本专栏收纳对库中数据结构的说明以及手撕模拟
UtoCoo
有幸成为长河的一粒沙
展开
-
RedBlackTree(红黑树)
极端情况下,最短路径都是黑色结点,不存在红色结点,最长路径是一黑一红的黑红相间,但是,一棵红黑树不一定存在最长路径和最短路径,也有可能是平衡的。且插入结点的grandfather结点一定是黑色(在插入结点之前的树一定是红黑树,说明不存在连续的红色结点)。和情况一不同的是,情况二经过旋转+变色,无论是p变为黑色结点还是cur变为黑色结点,都不需要再向上处理。插入新结点的颜色必须是红色,如果插入新节点的颜色是黑色,则大概率会违反。一个红色结点的孩子必然是黑色,一个黑色结点的孩子可以是红色也可以是黑色。原创 2024-07-13 11:28:39 · 480 阅读 · 0 评论 -
AVLTree
相比BinarySearchTreeNode,AVL树的结点引入平衡因子 = 右子树高度 - 左子树高度,并且多加了指向父亲的指针。原创 2024-07-10 16:40:21 · 1018 阅读 · 0 评论 -
二叉搜索树(BST)
比如商场停车场,从停车场出去时,通过查找key即车牌找到记录,value可能表示进入停车场的时间。遍历整个BST,基于BST的特性,如果要查找的值key大于当前cur的值,则在右子树查找,反之,则在左子树查找。判断当前结点是父的左还是右,如果是左,则父->左 = 结点->右;b.将找到的值替换到要删除的位置,转换为要删除右子树最左结点(或者左子树最右结点)存在一种特殊情况,就是删除左子树为空的根结点,此时父和要删除的结点为同一个。,统计成功后,给定单词就可快速找到其出现的次数,原创 2024-07-05 11:36:10 · 765 阅读 · 0 评论 -
堆——数组堆
什么是堆?什么是树?堆和二叉树傻傻分不清?1. 树是一种数据结构,但是他很抽象,因为他不是线性的,以前接触到的比如顺序表,链表都是可以具象成一条线的,但是树不是这样的,他就是像一颗倒过来的树:2. 既然某种结构可以抽象成一种树,那么就可以抽象出数据(叶子)和数据之间的关系(树枝)了。那么规定好这样一种树——这种树的每个结点最多只能指向两个其他的结点。像这样:既然只能指向两个其他的结点。那么就可以规定左右子树,且哪个是左哪个是右不能随意颠倒:注意:提一句,树的起点只有一个,叫做根。原创 2023-09-17 10:11:01 · 60 阅读 · 0 评论 -
手撕单链表
重定义需要注意,结构体成员next类型不能写为重定义后的命名。原创 2023-08-06 12:12:45 · 42 阅读 · 0 评论