自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 xdoj-输出快速排序递归算法隐含递归树的后序遍历序列

这个语句,这一句话实际上已经根据此次的枢轴量排序好了,那么也就相当于这棵树左右子树已经分好了,也就相当于二叉树是建立好的,然后下来再打印左子树的枢轴量,打印右子树,打印根。因为在快速排序的过程中存在递归,并且是分别快速排序枢轴量的左半部分和右半部分,这和二叉树分别建立左右子树是一样的,而其中的结点值也就是枢轴量。还有一点就是大家可能会有顾虑,在遍历二叉树的时候,二叉树是已经建立好的,但是快速排序是一边在排序,一边在输出,这会不会使这个过程出现问题。在一行上输出由关键字隐含的二叉树的后序遍历序列。

2023-12-29 21:16:15 581

原创 xdoj 二叉排序树的判定

第一行两个数n,root,分别表示二叉树有n个结点,第root个结点是二叉树的根。接下来共n行,第i行三个数val_i、left_i、right_i,分别表示第i个结点的值val是val_i,左儿子left是第left_i个结点,右儿子right是第right_i个结点。我的方法是使用给出的元素顺序,建立正确的二叉排序树,然后使用二叉排序树的查找方法,找到对应的元素,与题目给出的信息相比较,如果全部一致就是一颗正确的二叉排序树。输出"true"如果给定二叉树是二叉排序树,否则输出"false"

2023-12-26 18:32:22 782 4

原创 xdoj 二叉排序树的遍历

将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。输入一系列整数,建立二叉排序树,并进行前序,中序,后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。题目: 二叉排序树的遍历。

2023-12-26 18:24:58 543

原创 xdoj 二叉排序树之父结点

给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有父亲节点,则输出-1。第一行是一个数字N(N<=100),表示待插入的节点数。第二行是N个互不相同的正整数,表示要顺序插入节点的关键字值,这些值不超过10^8。输出共N行,每次插入节点后,输出该节点对应的父亲节点的关键字值。题目: 二叉排序树之父结点。

2023-12-26 18:24:05 584

原创 xdoj 相同二叉树排序

每组数据第一行是一个数n,(1<=n<=20) 表示有n个需要判断,n=0 的时候输入结束。接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉排序树。接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉排序树。如果二叉排序树相同则输出YES,否则输出NO。判断两序列是否为同一二叉排序树序列。题目: 相同二叉排序树。

2023-12-26 18:20:23 461

原创 xdoj 找位置

给定字符串中重复的字母有a,b,1,2,依次输出上述每个字母在字符串中的全部位置。输入包括一个由字母和数字组成的字符串,其长度不超过100。2、相同的字母在一行表示出其出现过的位置。按照样例输出的格式将字符出现的位置标出。可能有多组测试数据,对于每组数据,对给定的一个字符串,找出。

2023-12-16 23:06:06 185

原创 xdoj 分组统计

输入第一行表示样例数m,对于每个样例,第一行为数的个数n,接下来两行分别有n个数,第一行有n个数,第二行的n个数分别对应上一行每个数的分组,n不超过100。这个题我没有太好的方法,以上方法没有很好的利用到哈希表的特性,代码还是相对冗长,没有“空间换时间”,但是个人认为这种方法比较好想。按顺序输出各个样例的结果。输出格式参见样例,按组号从小到大输出,组内数字也按编号从小到大输出。先输入一组数,然后输入其分组,按照分组统计出现次数并输出,参见样例。第一组中2出现0次,3出现2次,8出现一次。

2023-12-16 23:03:00 255

原创 xdoj 最短路径

输入数据第一行是一个正整数,表示图中的顶点个数n(顶点将分别按0,1,…之后的n行每行都包含n个整数,第i行第j个数表示顶点i-1和顶点j-1之间的边长,用10000来表示两个顶点之间无边。后面每行2个数字,表示一对待求最短路径的顶点,用-1 -1表示输入结束,-1 -1不求解。每对待求最短路径的顶点输出两行数据:第一行输出两个顶点间的最短路径长度,第二行输出最短路径,要按顺序输出顶点编号序列,顶点间用空格隔开。当两个顶点间没有路径时,只在一行上输出字符串“NO”。求图中任意两个顶点之间的最短路径。

2023-12-12 17:21:52 316

原创 xdoj 网络时延

给定一个二维数组times[M][3],表示信号经过有向边的传递时间。times[i][3] = {u, v, w}, 其中u是源节点,v是目标节点,w是一个信号从源节点传递到目标节点的时间,即二维数组中的一行表示一条带权有向边。所有的边times[i][3] =(u, v, w)都有1 <= u, v <= N 且 1 <= w <= 50。多行输入数据,第1行为3个正整数,分别是M,N,K。接下来有M行,每行有3个正整数,分别是u, v, w。输出一个数,表示需要多久才能使所有节点都收到信号。

2023-12-12 17:19:54 212

原创 xdoj 图的深度优先遍历

已知无向图的邻接矩阵,以该矩阵为基础,给出深度优先搜索遍历序列,并且给出该无向图的连通分量的个数。在遍历时,当有多个点可选时,优先选择编号小的顶点。(即从顶点1开始进行遍历)第一行输出为无向图的深度优先搜索遍历序列,输出为顶点编号,顶点编号之间用空格隔开;第二行为无向图的连通分量的个数。第一行是1个正整数,为顶点个数n(n<100),顶点编号依次为1,2,…后面是邻接矩阵,n行n列。题目:图的深度优先遍历。

2023-12-12 17:18:44 145

原创 xdoj 图的广度优先遍历

已知无向图的邻接矩阵,以该矩阵为基础,给出广度优先搜索遍历序列,并且给出该无向图的连通分量的个数。在遍历时,当有多个点可选时,优先选择编号小的顶点。(即从顶点1开始进行遍历)第一行输出为无向图的广度优先搜索遍历序列,输出为顶点编号,顶点编号之间用空格隔开;第二行为无向图的连通分量的个数。第一行是1个正整数,为顶点个数n(n<100),顶点编号依次为1,2,…后面是邻接矩阵,n行n列。题目:图的广度优先遍历。

2023-12-12 17:17:30 188

原创 xdoj 判断有向图中是否有环

输入数据第一行是一个正整数,表示n个有向图,其余数据分成n组,每组第一个为一个整数,表示图中的顶点个数n,顶点数不超过100,之后为有向图的邻接矩阵。输出结果为一行,如果有环,则输出1,如果无环,则输出0。按顺序输出这n个有向图的判断结果,前后结果的输出不加空格。题目:判断有向图中是否有环。判断有向图中是否有环。

2023-12-12 17:15:26 182

原创 xdoj 关键路径

输入数据第一行是一个正整数,表示图中的顶点个数n(顶点将分别按0,1,…,n-1进行编号),顶点数不超过100,其中0为源点,n-1为汇点。之后的n行每行都包含n个整数,为AOE-网的邻接矩阵,其中0表示两个顶点间无直接可达的弧,大于0的整数表示活动持续的时间。输出AOE-网中关键路径的长度,如果网中有环,则输出“NO”。计算AOE-网中关键路径的长度。

2023-12-12 17:12:48 404

原创 xdoj 高铁网络

国家建设高铁网络,网络由一些连接城市的高铁线路构成。现有高铁建设情况可列为一张统计表,表中列出了每一条高铁线路直接连接的两个城市。国家的建设目标是全国每两个城市之间都可以实现高铁交通(但不一定有直接的高铁线路相连,只要能间接通过高铁线路可达即可)。问最少还要建设多少条高铁线路?测试用例的第1行给出两个正整数,分别是城市数目N(<1000)和现有高铁线路数目M。随后的M行对应M条高铁线路,每行给出一对正整数,分别是该条高铁线路直接连接的两个城市的编号。在一行上输出最少还需要建设多少条高铁线路。

2023-12-12 17:09:41 83

原创 xdoj 最小生成树

输入数据第一行为两个正整数n(1

2023-12-12 17:07:31 490 2

原创 xdoj 求无向图连通子图

【代码】xdoj 无向图的连通子图。

2023-12-12 17:02:38 198

原创 xdoj 二叉树扩展先序遍历转中序遍历 二叉树遍历

公式化的过程,需要理解记忆。

2023-11-27 17:47:02 100

原创 xdoj 输出完全二叉树的某一层

利用完全二叉树的性质,某一层的最左边结点的值是2的n-1次方,最右边的值是2的n次方减1。

2023-11-27 17:43:58 234

原创 xdoj 完全二叉树的公共父节点

此题不要尝试去建立数,题目中无限大的树是真的很大,那个测试数据是真的容易超时,只要利用完全二叉树的性质,结点的父结点的值是该结点的值除以二,就可以走出一条路径。

2023-11-27 17:40:43 67

原创 xdoj 完全二叉树的子树

ps:每次输入一个情况就可以立刻输出结果,不用把所有结果最后一起输出,当然也可以这么做(oj也可以通过),但没有必要。(本人一开始没明白,将所有结果都存起来,一起输出了,哎)重复此过程,直到某结点的儿子结点超出总的结点数目(n),此时进入过队列的元素个数即为子树结点个数。处理队顶元素,其儿子结点的值是其二倍和二倍加一,出队列,将其儿子结点入队列,此题利用层次遍历和队列的联系,完全二叉树的性质,来实现代码。即输入m,将此数入队列,

2023-11-27 17:36:00 120

原创 xdoj 将二叉树转换为求和树

对每一个结点再使用遍历,将结点的data赋值为零(求和树的结点值是左右子树所有结点值的和,不包含根节点的值),把结点data的地址传入一个遍历函数,每到一个子结点就加上这个结点的data。

2023-11-27 17:19:51 131

原创 xdoj 二叉树的不同形态

对于右子树而言,有新的层次序列4 6 7 1,新的中序序列6 4 7 1,同理找到根结点4,左子树6,右子树7 1,显然这棵树的左子树就是一个结点6,右子树以此类推可以得到是以7为根结点,右孩子为1的树。如这棵树的左右子树的层次序列5 2, 4 6 7 1,仅仅是从层次序列中取了左右结点出来,顺序没有改变,故可以用双循环遍历层次序列和中序序列,以中序中的根为分界,将层次序列中与左边结点相同的点取出来,成为左子树的层次序列,将层次序列中与右边结点相同的点取出来,成为右子树的层次序列。

2023-11-27 00:10:14 188

原创 xdoj huffman哈夫曼编码

本文采用的此方法的主体部分是利用结构体数组,构造一棵可以从叶子节点回溯到根节点,以及可以从根节点到达叶子节点的哈夫曼树,有了这个树之后无论是求权值还是哈夫曼编码都会比较容易。此题也可以利用一些数学规律,比方WPL是每次两个最小数之和的和,利用数组和排序求解。

2023-11-22 00:52:17 73

原创 xdoj 判断堆栈出栈序列是否有效

具体如下,将n个数输入进一个整形数组,对这个数组遍历判断,首先是升序,只要是升序就是合法的,如果整个输入是不合法的,那么问题一定会出在降序部分,对于降序部分也认定为合法,那么问题将出在降序结束的部分上,当 n = 5 时,如果输入4,2,1,3,5这样不合法情况,按照上述方法,会认定4,2,1都是合法的,遇到3时,3 > 1,降序结束,这时对于3,有3 < 4,便判断出不合理。当然也可以压栈后直接出栈,比方先将1压栈,后出栈,此时会输出1,再压栈2,出栈2,输出2,以此类推,输出1,2,3,4,

2023-11-08 15:33:54 184 1

原创 xdoj括号匹配问题

【代码】xdoj括号匹配问题。

2023-11-08 10:13:32 124 1

原创 xdoj前缀表达式求值

第二个问题在于后续计算时,如何判断运算符是运算符,对于上一道题,后缀表达式,题目中说明了是个位数的计算,而加减乘除的符号对应的Ascll码值分别为43,45,42,47,故而可以直接使用 S->data == '+' 来判断,但是对于此题,其中运算的整数并没有特殊说明,甚至在oj中的例子里的42就是 * 的Ascll码值,42 == '/' , 返回的是1。使用do while循环可以省去个位数的情况的判断,无论是几位数都先将第一位数字赋给a,而当是多位数时,原本的a需要进一位,十进制就是乘十了。

2023-11-08 00:41:53 169 1

原创 xdoj后缀表达式求值

继续对例2进行分析,为了从左到右处理,先把内容从后往前压入栈1,+/39+*3-135,处理栈顶元素,不是符号就出栈,入栈2,此时有栈2为 531,遇到运算符号时对栈2进行处理,取出前两位,运算完后压栈,即52(注意 ,被减/除数是第二个出栈的元素)再取数字523,遇到*再处理,后面的栈2种存储的依次为56,11,1193,113,14,方法以此类推,直到栈1为空,完全处理。(5((31-)3*)+)+(93/),((5((31-)3*)+)(93/)+)然后去括号,531-3*+93/+

2023-11-04 19:25:15 228 1

原创 xdoj迷宫问题

本题使用链栈和穷举法解决,将走过的和无法走的节点都赋为1,然后回溯,直到解决问题,此题中四个方向的优先级分别是:右下左上,终点的方向默认为1。

2023-10-29 01:43:17 201 1

原创 xdoj魔王语言解释

举例:(1(2abc)),对于这个魔王语言,首先是处理内部括号,变为(12c2b2a2),再处理外括号,变为121a121b121c121,至此翻译完毕,这个题目的关键是从内部括号开始处理,我将使用栈的方法解决这一问题。此时我们找到了内部括号,再将栈(2)中的内容压入栈(3),至(停止,并且将(出栈,则栈(2)中为(1,栈(3)中为cba2。再将栈(1)中的内容入栈(2),遇到)时停止,同时将)出栈,则此时栈(1)中为),栈(2)中有(1(2abc。再将 栈(3)和栈(2)的内容分步压入栈(1)。

2023-10-29 01:39:06 201

原创 xdoj报数出列

【代码】xdoj报数出列。

2023-10-29 01:08:40 102

原创 xdoj链表去重

【代码】xdoj链表去重。

2023-10-29 01:07:05 74 1

原创 xdoj,约瑟夫环和一元稀疏多项式计算

【代码】xdoj,约瑟夫环和一元稀疏多项式计算。

2023-10-17 20:24:16 102 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除