- 博客(14)
- 资源 (20)
- 收藏
- 关注
原创 递归和非递归实现二叉排序树(BST)的查找操作
二叉排序树又称二叉查找树非递归实现BST的查找操作空间复杂度为O(1),但是递归实现的空间复杂度为O(h),h为树的高度#include <iostream>using namespace std;typedef struct BSTNode{ int key; struct BSTNode *lchild,*rchild;}BSTNode,*BSTree;//非递归,空间复杂度为O(1)BSTNode *BST_Search(BSTree T,int k.
2020-07-28 19:46:51 594
原创 树和森林转二叉树,二叉树无右孩子(或右指针域为空)的结点个数计算思路
前提是知道非终端结点(分支结点)的个数,假设非终端结点的个数为n1.对于树转二叉树:因为转化规则是“左孩子右兄弟”,如果有n个分支结点,因为每个分支结点都会有孩子,这些孩子都是兄弟,然而最右边的孩子已经没有右兄弟了,没有右兄弟就意味着在转化为二叉树后这个孩子没有右孩子——即右指针域为空。又因为每个分支结点都存在一个没有右兄弟的孩子,所以n个分支结点就存在n个没有右兄弟的孩子,在转化为二叉树后这些孩子的右指针域都为空。最后,不要忘记树的根结点是没有兄弟的,所有在转化为二叉树后根结点的右指针域也
2020-07-27 22:51:13 8191 13
原创 先序序列为a、b、c、d的不同二叉树的个数是多少(卡特兰数)
除了逻辑清晰的挨个画出来之外,还有一种方法需要大家牢记!因为前序序列和中序序列可以唯一地确定一棵二叉树,并且题目已经给出了先序序列,所以我们只需要知道由该先序序列可以确定多少个中序序列即可,确定多少个中序序列就是可以确定多少棵二叉树!那么,问题来了,由一个先序序列如何确定有多少个中序序列呢?这就有两个“公式”需要大家去牢记了!1、先序序列和中序序列的关系为:以先序序列入栈,则出栈序列必为中序序列。2、一个入栈顺序可以确定的出栈顺序为C(2n,n) / (n+1)(卡特兰数)。..
2020-07-26 18:59:29 20442 8
原创 二叉树的先序线索化、中序线索化、后序线索化的对比
有一点需要注意:在先序遍历一个节点的左子树时,需要判断其ltag的值是否为0,如果为0可以正常遍历,但是,如果为1就不能进行遍历。因为ltag的值为1说明该结点的左指针指向的是它的前驱结点而不是左孩子(左孩子其实并不存在),继续遍历的话就会陷入“转圈圈”(前驱结点、该结点、前驱结点、该结点……)因为在中序遍历的顺序为左孩子、跟结点、右孩子,后序遍历的顺序为左孩子、右孩子、根结点。在遍历到跟结点时它的左孩子肯定是已经被遍历过了,不存在上述“转圈圈”的问题,所以可以正常遍历。右指针要么指向右孩子,要么指
2020-07-25 15:48:52 2556 6
原创 二叉树的四种遍历方法:前序、中序、后序、层次
前/中/后序遍历也可分别称为前/中/后根遍历#include <iostream>using namespace std;//二叉树的链式存储的结点typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//链式队列结点typedef struct LinkNode{ BiTNode *data; struct LinkNode *ne
2020-07-25 00:00:49 205
原创 串的模式匹配、KMP算法、nextval数组求法
一、暴力匹配#include <iostream>using namespace std;#define MAXLEN 255typedef struct{ char ch[MAXLEN]; int length;}SString;//S为主串,T为子串//暴力匹配int Index(SString S,SString T){ int i=1,j=1; int k=1; while(i<=S.length &&
2020-07-17 23:50:53 557
原创 分别用顺序表和链表实现队列
一、顺序表实现队列#include <iostream>using namespace std;#define MaxSize 50typedef struct{ int data[MaxSize]; int front,rear;}SqQueue;void InitQueue(SqQueue &Q){ Q.front=Q.rear=0;}bool IsEmpty(SqQueue Q){ if(Q.front==Q.rear)
2020-07-11 23:00:12 188
原创 数据结构—分别用头插法和尾插法建立单链表
#include <iostream>using namespace std;typedef struct LNode{ int data; struct LNode *next;}LNode,;*LinkList;//头插法LinkList List_HeadInsert(LinkList &L){ LNode *s; int x; L=(LinkList)malloc(sizeof(LNode)); L->next=.
2020-07-07 23:37:25 535
原创 将两个有序表合并为一个
#include <iostream>using namespace std;#define Maxsize 20typedef struct{ int length; int data[Maxsize]; int maxSize;}SqList;bool Merge(SqList A,SqList B,SqList &C){ if(A.length+B.length>C.maxSize) return false;.
2020-07-05 22:45:28 186
原创 删除有序表中重复的元素,注意是有序表!
#include <iostream>using namespace std;#define Maxsize 20typedef struct{ int data[Maxsize]; int length;}SqList;void Del_repeat(SqList &L){ int i,k=0,temp=L.data[0]; for(i=1;i<L.length;i++) { if(L.data[i]==te.
2020-07-05 21:26:16 238
原创 三种方法删除有序表中s和t直接的元素(包含s和t)
#include <iostream>using namespace std;typedef struct{ int data[10]={0,1,2,3,4,5,6,7,8,9}; int length=10;}SqList;//解一bool Del_s_t(SqList &L,int s,int t){ if(L.length==0||s>=t) return false; int k=0; for(int.
2020-07-04 23:23:59 438
原创 顺序表所有元素逆置,空间复杂度O(1)
#include <iostream>using namespace std;//#define Maxsize 10typedef struct{ int length=10; int data[10]={0,1,2,3,4,5,6,7,8,9};}SqList;void Reverse(SqList &L){ int temp; for(int i=0;i<=L.length/2-1;i++) { tem.
2020-07-03 22:48:03 655 2
C++和QT实现的交通路径规划系统
2024-01-07
QGIS3.18编译需要的环境,需要的软件都在压缩包里面
2023-12-17
QGIS二次开发:给图层添加矢量要素,编程环境为QGIS3.28和VS2017
2023-08-15
QGIS二次开发:显示矢量图层的属性表,编程环境为QGIS3.28和VS2017
2023-08-15
QGIS二次开发:创建地图工具,编程环境为QGIS3.28和VS2017
2023-08-15
QGIS二次开发:显示多个图层,编程环境为QGIS3.28和VS2017
2023-08-15
QGIS二次开发:显示Shapefile,编程环境QGIS3.28+VS2017
2023-08-15
Python数据可视化(处理地下车库情况的CSV文件,统计信息并绘图)
2023-03-10
CS1.6便携版,几十个地图均做了改良,低配电脑也可愉快玩耍,可局域网联机对抗,同时附带一些好玩的部件
2022-02-14
博客使用的Tampermonkey插件.zip
2021-08-30
concurrent.rar
2021-02-03
新闻发布系统前端页面.rar
2020-05-25
纯JS实现前端购物车案例.rar
2020-04-08
股票列表的HTML代码和爬取结果.rar
2020-01-30
Sublime Text Build 3176 x64 Setup.exe
2019-05-31
cpu-z_1.88-cn.zip
2019-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人