数据结构-陈越、何钦铭
JinbaoSite0144
在你想要放弃的那一刻,想想为什么当初坚持走到了这里!
展开
-
06-图1 列出连通集
题意求一个图的DFS和BFS。解题思路用递归的方式DFS,利用队列来BFS参考代码#include <bits/stdc++.h>using namespace std;#define N 20int Map[N][N];bool used[N];int n,e;int flag=0;void DFS(int x){ printf("%d ",x); used[x]=t原创 2016-10-22 11:45:10 · 742 阅读 · 0 评论 -
中国大学MOOC-陈越、何钦铭-数据结构-2016秋期中考试
判断题1-1 算法分析的两个主要方面是时间复杂度和空间复杂度的分析。 (2分) 答案:T1-2 将NN个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找,那么查找的平均时间复杂度是O(logN)O(logN)。 (3分) 答案:F1-3 通过对堆栈S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。输出的序列原创 2016-10-08 19:40:32 · 36270 阅读 · 1 评论 -
02-线性结构4 Pop Sequence
题意有一个栈大小为M的栈,有一个数列1,2,3,…,n要入栈,你可以任意时候出栈,给你一个k个出栈的序列,判断是否可以由这个数列得到,如果可以输出YES,不能则输出NO。解题思路对于入栈出栈的队列我们可以知道两个关系: (1)对于刚出栈的数x,1~x内未出栈的个数应该小于栈的大小M。 (2)对应刚出栈的数x,如果比前一个出栈的数y小,那么x~y之间的所有数应该全部出栈。 因此我们可以扫描序列,原创 2016-10-10 18:14:40 · 1413 阅读 · 1 评论 -
03-树1 树的同构
题意给你两棵树,判断这两棵树是否同构。解题思路树同构说明树的大小完全相同,因此我们可以递归遍历树的时候,对于树A,B,我们访问A的左子树时,我们也可以同时访问B的右子树,同理访问A的右子树时,我们也可以同时访问B的左子树。查找树根:我们对所有结点的左右子树已经出现的下标做标记,如果某个下标没有出现,那么该下标对应的结点是树根。参考代码#include <stdio.h>#include <iost原创 2016-10-10 18:16:02 · 552 阅读 · 0 评论 -
03-树2 List Leaves
题意给你一棵树,按照从上到下,从左到右的顺序输出所有的叶子节点解题思路利用队列来层次遍历树。参考代码#include <stdio.h>#include <iostream>#include <string.h>#include <queue>using namespace std;#define MAXN 15struct Node{ int l,r;}tree[MAXN];原创 2016-10-10 18:17:11 · 486 阅读 · 0 评论 -
03-树3 Tree Traversals Again
题意给出一个二叉树前序遍历过程中的弹栈和压栈的过程,求这个二叉树的后序遍历。解题思路Push过程是前序遍历,Pop过程是中序遍历。 已知前序和中序求后序: 1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。 2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为原创 2016-10-10 18:18:27 · 680 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树
题意给你一个序列构造一个二叉搜索树,然后再给你L个序列,对每个序列构造二叉搜索树,问这棵二叉搜索树跟最开始的二叉搜索树是否一样?解题思路分别构造二叉搜索树,然后同时对两棵二叉搜索树进行遍历,看是否一样。参考代码#include <iostream>using namespace std;typedef struct Node{ int v; struct Node *l,*r;原创 2016-10-10 18:19:25 · 756 阅读 · 0 评论 -
04-树5 Root of AVL Tree
题意构造一棵AVL树,输出根结点的值。参考代码#include <bits/stdc++.h>using namespace std;typedef struct Node{ int v,h; struct Node *l,*r;}*tree;int GetHigh(tree t){ if (t==NULL) return 0; return max(GetH原创 2016-10-10 21:37:28 · 912 阅读 · 0 评论 -
04-树6 Complete Binary Search Tree
题意求一个完全二叉树的二叉排序树解题思路对于完全二叉树我们可以先求出左子树的大小A和右子树的大小B,又由于二叉排序树根节点的值应大于左子树的所有节点,小于右子树的所有节点,所以根节点的值应该是升序数组中的第A+1个数,同理可对左子树和右子树同样进行递归求解。参考代码#include <bits/stdc++.h>using namespace std;int n;int a[1000+5];原创 2016-10-11 12:41:50 · 405 阅读 · 0 评论 -
04-树7 二叉搜索树的操作集
04-树7 二叉搜索树的操作集本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X );Position FindMin( Bin原创 2016-10-18 20:52:13 · 2081 阅读 · 0 评论 -
02-线性结构1 两个有序链表序列的合并
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。函数接口定义:List Merge( List L1, List L2 );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个原创 2016-10-18 21:37:57 · 8266 阅读 · 10 评论 -
中国大学MOOC-陈越、何钦铭-数据结构-2016秋期末考试
判断题1-1 N2logNN^2logN和NlogN2NlogN^2具有相同的增长速度。 (2分) 答案:F1-2 对一棵平衡二叉树,所有非叶结点的平衡因子都是0,当且仅当该树是完全二叉树。(2分) 答案:F1-3 无向连通图所有顶点的度之和为偶数。 (2分) 答案:T1-4 对N个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多。 (2分)原创 2016-11-24 21:17:09 · 37138 阅读 · 2 评论