![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
中国大学MOOC-陈越、何钦铭-数据结构-2018春
文章平均质量分 73
czlm爱你的笑
努力
展开
-
02-线性结构4 Pop Sequence(25 分)
题意:1-N按顺序压入栈,中间可以弹出数据。判断给定的序列是否可能是弹出的序列。思路:建立一个栈,如果读入的数小于栈顶元素(肯定不可能,输出NO),如果读入的数为栈顶元素,则栈顶指针指向下一个数,继续判断,如果读入的数大于栈顶元素,继续压入元素。如果所有的数都满足要求则输出yes注意点:栈为空,需要压入一个数。栈溢出,输出也是NO。#include<stdio.h>int main...原创 2018-03-22 13:28:59 · 2205 阅读 · 5 评论 -
04-树5 Root of AVL Tree(25 分)
method_1:有两个测试点未通过,参考的严奶奶《数据结构》中的方法。如果你有改进的算法,欢迎评论。#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct node{ int data; int pf; struct node *left; struct node ...原创 2018-04-03 22:09:50 · 124 阅读 · 0 评论 -
04-树6 Complete Binary Search Tree(30 分)
#include<stdio.h> //中序遍历输出搜索二叉树输出为从小到大序列 #include<stdlib.h> //所以我们可以通过中序遍历将排好序的数列赋值给树的每一个结点 #include<malloc.h> //再通过层次遍历输出即可 #include<queue>using namespace std...原创 2018-04-03 22:00:08 · 168 阅读 · 0 评论 -
05-树7 堆中的路径(25 分)
#include<stdio.h>#include<stdlib.h> #include<malloc.h>#define Max 1000typedef struct heap *hp;struct heap{ int *data; //int size; 为什么size会变化 };void creat(hp H,int n,int m...原创 2018-04-03 21:34:50 · 203 阅读 · 0 评论 -
05-树8 File Transfer(25 分)
#include<stdio.h> int main(){ int N,i,M=0; int connect[10001]={0}; char c; scanf("%d",&N); getchar(); scanf("%c",&c); int S=0; while(c!='S'){ int a,b; scanf("%d %d",&a...原创 2018-04-03 21:18:18 · 658 阅读 · 0 评论 -
04-树7 二叉搜索树的操作集(30 分)非递归方法
题意:搜索二叉树的常规操作。思路:一般有两种,一种是递归调用,另一种是非递归的方法。我采用的是非递归的方法。注意点:1删除操作,一个节点左右都不为空,是将结点的右子树接到左子树的最大值的右孩子。2访问节点时,一定要注意该节点是否为空,如果为空千万不要去访问节点的数据,不然会出错。#include <stdio.h>#include <stdlib.h>#include&...原创 2018-03-27 19:11:11 · 276 阅读 · 0 评论 -
02-线性结构2 一元多项式的乘法与加法运算
题意:设计函数分别求两个一元多项式的乘积与和。思路:用一个数组存储多项式的指数项,另一个存储系数项,该数组的下标即为指数项。include<stdio.h>int b1[1000],a1[1001]={0};//第一个多项式int a2[1001]={0};//加法多项式int a3[2001]={0};//乘法多项式int main(){ int N1,N2,i,j;...原创 2018-03-22 12:15:35 · 165 阅读 · 0 评论 -
03-树3 Tree Traversals Again(25 分)
题意:堆栈操作,对应一个二叉树的先序和中序,根据操作,输出这个二叉树的后序遍历。思路:也就是典型的根据二叉树的先序和中序,构建二叉树并后序遍历。在二叉链表的基础上用两个标记分别标记一个节点是否可能有左右孩子。这样方便往回查找父亲节点。(1)每次push必有新节点,并消耗一条边(该节点只可能还有一个孩子),每次pop必使一个节点少一个孩子,(2)重点是每次push操作确定是加在那个节点及成为节点的哪...原创 2018-03-25 15:37:40 · 523 阅读 · 0 评论 -
03-树1 树的同构(25 分)
题意:给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。判断给定两个二叉树是否是同构树。思路:我觉得同构即对应节点的孩子相同,即相减后结果为0。所以逐个判断两棵树对应节点的孩子相减的结果是否为0即可判断是否为同构树。因为数据为字母,所以可以用数组下标快速找到每个节点。#include<stdio.h>struct node{ char ...原创 2018-03-25 13:45:47 · 446 阅读 · 1 评论 -
03-树2 List Leaves(25 分)
题意:按层次输出叶子节点思路:由于数据都是小于10的整数,所以可以用数组存储二叉树,层次遍历二叉树则需要一个队列存储每一层的节点。遇到叶子节点就输出。#include<stdio.h>struct node{ //数组用来存储二叉树 int data; int left; int right;}tr[10];int main(){ int N,i,M=0; i...原创 2018-03-25 13:32:08 · 1679 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树(25 分)
思路有三:method_1:构造两颗搜索二叉树在,然后逐一比较。method_2:构造一颗二叉树,另一组数据用来查找method_3:直接比较两个数组,递归。我用的method_1:#include <stdio.h>#include <stdlib.h>#include<malloc.h>typedef int ElementType;typedef...原创 2018-04-03 22:16:53 · 292 阅读 · 0 评论