2 外号班长

尚未进行身份认证

我要认证

技术爱好者一枚

等级
TA的排名 3w+

B树和B+树的区别

From王道数据结构

2020-08-12 17:23:15

DFS实现逆拓扑排序

多思考递归的过程!//DFS实现逆拓扑排序bool visited[MaxVertexNum];void DFSTraverse(Graph G){ for(v=0;v<G.vexnum;v++) visited[v]=FALSE; for(v=0;v<G.vexnum;v++) if(!visited[v]) DFS(G,v);}void DFS(Graph G,int v){ visit(v);.

2020-08-06 18:43:53

求最短路径——BFS、Dijkstra、Prim算法对比

来自王道数据结构

2020-08-06 18:40:16

图的两种遍历算法——BFS和DFS

一、BFS,也称广度优先搜索,和二叉树的层次遍历算法类似//BFSbool visited[MaxVertexNum];void BFSTraverse(Graph G){ for(i=0;i<G.vexnum;i++) visited[i]=FALSE; InitQueue(Q); for(i=0;i<G.vexnum;i++) if(!visited[i]) BFS(G,i);}void BFS(G

2020-08-05 14:43:04

图的邻接矩阵存储和邻接表存储定义方法

一、邻接矩阵#include <iostream>using namespace std;#define MaxVertexNum 100 //顶点最大数目//邻接矩阵存储结构typedef struct{ char Vex[MaxVertexNum]; //顶点表 int Edge[MaxVertexNum][MaxVertexNum]; //边表 int vexnum,arcnum; //图当前顶点数

2020-08-05 14:37: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

树和森林转二叉树,二叉树无右孩子(或右指针域为空)的结点个数计算思路

前提是知道非终端结点(分支结点)的个数,假设非终端结点的个数为n1.对于树转二叉树:因为转化规则是“左孩子右兄弟”,如果有n个分支结点,因为每个分支结点都会有孩子,这些孩子都是兄弟,然而最右边的孩子已经没有右兄弟了,没有右兄弟就意味着在转化为二叉树后这个孩子没有右孩子——即右指针域为空。又因为每个分支结点都存在一个没有右兄弟的孩子,所以n个分支结点就存在n个没有右兄弟的孩子,在转化为二叉树后这些孩子的右指针域都为空。最后,不要忘记树的根结点是没有兄弟的,所有在转化为二叉树后根结点的右指针域也

2020-07-27 22:51:13

先序序列为a、b、c、d的不同二叉树的个数是多少(卡特兰数)

除了逻辑清晰的挨个画出来之外,还有一种方法需要大家牢记!因为前序序列和中序序列可以唯一地确定一棵二叉树,并且题目已经给出了先序序列,所以我们只需要知道由该先序序列可以确定多少个中序序列即可,确定多少个中序序列就是可以确定多少棵二叉树!那么,问题来了,由一个先序序列如何确定有多少个中序序列呢?这就有两个“公式”需要大家去牢记了!1、先序序列和中序序列的关系为:以先序序列入栈,则出栈序列必为中序序列。2、一个入栈顺序可以确定的出栈顺序为C(2n,n) / (n+1)(卡特兰数)。..

2020-07-26 18:59:29

二叉树的先序线索化、中序线索化、后序线索化的对比

有一点需要注意:在先序遍历一个节点的左子树时,需要判断其ltag的值是否为0,如果为0可以正常遍历,但是,如果为1就不能进行遍历。因为ltag的值为1说明该结点的左指针指向的是它的前驱结点而不是左孩子(左孩子其实并不存在),继续遍历的话就会陷入“转圈圈”(前驱结点、该结点、前驱结点、该结点……)因为在中序遍历的顺序为左孩子、跟结点、右孩子,后序遍历的顺序为左孩子、右孩子、根结点。在遍历到跟结点时它的左孩子肯定是已经被遍历过了,不存在上述“转圈圈”的问题,所以可以正常遍历。右指针要么指向右孩子,要么指

2020-07-25 15:48:52

二叉树的四种遍历方法:前序、中序、后序、层次

前/中/后序遍历也可分别称为前/中/后根遍历#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

树的常考性质

版权归王道所有

2020-07-19 22:49:57

串的模式匹配、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

稀疏矩阵的压缩存储的两种策略

来自王道数据结构

2020-07-15 22:15:32

三对角矩阵(带状矩阵)的压缩存储原理

来自王道数据结构

2020-07-15 22:13:28

分别用顺序表和链表实现队列

一、顺序表实现队列#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

数据结构—分别用头插法和尾插法建立单链表

#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

将两个有序表合并为一个

#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

删除有序表中重复的元素,注意是有序表!

#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

三种方法删除有序表中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

顺序表所有元素逆置,空间复杂度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

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享精英
    分享精英
    成功上传11个资源即可获取