- 博客(12)
- 收藏
- 关注
原创 b树插入c++实现
2.7父亲不为空就递归插入,刚开始插入时需要根据key查找在哪个节点插入,递归时就不用找了,直接插parent。这里关键字和儿子下标一致,分完还要清空cur被分走的关键字和儿子,其中cur->keys[mid]分给了父亲。2.5 判断是否分裂,分裂条件cur->n == m ,分裂时主要是分关键字和儿子给兄弟。//关键字已存在,返回空节点,不允许插入。cur) { //没有递归时,是空指针,需要寻找,递归后传入的是父节点就不用再找了。//阶数,最多m-1个关键字,m个孩子,实际都多给一个空位。
2024-09-29 10:24:07
1004
原创 红黑树删除c++实现
if (cur == parent->_left)//情形二,不管uncle存不存,cur和parent在同一侧都单旋。if (parent->_right == Brother) { //兄弟在右,左旋使兄弟左节点成新兄弟。3第三类:删除带有两棵子树的节点,找到该节点的中序遍历前驱或后继节点,本文是用的前驱,拷贝前驱的数据,
2024-09-24 10:40:39
892
原创 c++构建红黑树
false:true;//parent为空时,插入的是根结点,返回true,插入成功。if (cur == parent->_right) { //属于RR,单向左旋。if (cur == parent->_left) { //属于LL,单右旋。if (parent == g->_left) //左边插入。//若pT为空则证明旋转的是一整棵树,因为根结点的_parent为空。else //右边插入parent==g->_right。//先保存一下T->_parent,因为下面会改它。
2024-09-20 23:13:58
1020
原创 C++构建平衡二叉树
当属于RL失衡时:需要对child右旋,即rrotate(root->child),再对root左旋,即lrotate(root);当属于LR失衡时:需要对child左旋,即lrotate(root->child),再对root右旋,即rrotate(root);if (getHeight(T->lchild) - getHeight(T->rchild) == 2) { //发生失衡。if (data > T->rchild->data) { //属于RR,单向左旋。
2024-09-18 02:02:59
545
原创 C/C++构建二叉排序树
void lrotate(bNode* & T) { //指针类型的引用做形参可以改变外面的指针值,以及改变指针指向。//使用c语言版时调用。//构建二叉排序树(c语言版,传入二级指针)//构建二叉排序树(c++版,传入指针引用)//中序遍历二叉排序树,借助一个栈。
2024-09-18 00:56:52
422
原创 通过切割字符串获得最长不重复子串c++实现
/无重复字符的最长子串长度"2552546613271" "254613"是一个序列,最长子串是"61327"point=j+1;//例子 "2552546613271" 25 52 2546 61327。cout
2024-08-30 22:27:34
197
原创 最长回文串c++实现
/cout<<"不是回文"<<endl;cout <<"输入一个字符串:"<<endl;//cout<<"是回文"<<endl;/* 判断回文字符串 */
2024-08-30 14:41:23
414
原创 猴子选大王C++实现
int x[100];//用于临时替换mark[],类似两变量互换数值时的变量temp,防止mark[]变量值丢失。//举例 m: 1 2 3 4 5 6 n=3 依次出局:3,6,4,2,5,大王依次为。//共m个猴子,数到n踢出去,比如m=10,n=3;int i,j,k;
2024-08-29 18:13:18
894
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅