
PAT -树的遍历 堆 DFS
按类整理 志在必得
江船夜雨听笛
我无法原谅 什么都不做 却抱有期待的自己 行动起来 必须行动起来
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
pat-1143
代码一 有一个点 RE 运行超时此法在中序已知时可以针对一般树 #include<iostream> #include<map> #include<vector> using namespace std; int main() {int m,n; cin>>m>>n; //如果是二叉树的话就不需要中序了只要抓住按值大小就是中序 vector<int> pre; map<int,bool>cp; pre.resize(.原创 2021-01-18 14:41:47 · 176 阅读 · 0 评论 -
pat-1151
值的二刷 #include<iostream> #include<vector> #include<map> //少了这句话会出现如下错误 //using namespace std; (注意) using namespace std; int m,n; vector<int> in,pre; map<int,int> pos; //此时中序刚好可以直接用左右i的序号就可以左右分开 //preroot 前序根节点 inll中序的左范围.原创 2021-01-16 22:18:49 · 207 阅读 · 0 评论 -
pat-1004
#include<iostream> #include<vector> using namespace std; int n ,k; vector<int> v[109]; int level[109]={0}; int maxlebel=0; void dfs(int root,int depth) { //end if(v[root].size()==0) { level[depth]++; if(depth>maxlebel) maxlebel=.原创 2021-01-16 17:20:48 · 105 阅读 · 1 评论 -
pat-1020
基础题参数填写要明确 #include<iostream> #include<vector> #include<algorithm> using namespace std; vector<int> in,post; struct node{ int data; int index; }; vector<node> level; int n; void dfs(int root,int inl,int inr ,int index) .原创 2021-01-16 16:43:35 · 164 阅读 · 0 评论 -
pat-1043
值得二刷 #include<iostream> #include<vector> using namespace std; int n; vector<int> post,pre; bool mirror=false; void postorder(int root,int tail) { int i,j; if(root>tail) return; if(!mirror) { i=root+1; j=tail; //题干规定右面是>.原创 2021-01-16 15:17:48 · 178 阅读 · 2 评论 -
pat-1053
值的二刷 #include<iostream> #include<vector> #include<algorithm> using namespace std; struct node { vector<int>child;//子 int w; } ; vector<node> v;//父 vector<int>path; int n,k,target; void dfs(int root,int nod.原创 2021-01-15 22:30:06 · 177 阅读 · 0 评论 -
pat-1064
法一:较麻烦 #include<iostream> #include<vector> #include<cmath> #include<algorithm> using namespace std; int n; vector<int> in,level; //int levels=0,leaves=0,root=0; void levelorder(int index,int inl,int inr) { //end if(inl &g.原创 2021-01-15 16:54:14 · 197 阅读 · 0 评论 -
pat-1079
#include<iostream> #include<vector> #include<cmath> using namespace std; int n; double p,r; vector<int> v[100005],pr[100005]; double sum=0; void dfs(int index,int depth) { if(v[index].size()==0) { sum+=pr[index][0]*.原创 2021-01-15 12:25:56 · 128 阅读 · 0 评论 -
pat-1086
#include<iostream> #include<vector> #include<stack> #include<cstdio> #include<cstring> using namespace std; int n; vector<int> pre,in,post,value; void postorder(int root,int inl,int inr) { //end if(inl>inr) ret.原创 2021-01-15 11:33:20 · 126 阅读 · 0 评论 -
pat-1090
#include<iostream> #include<vector> #include<cmath> using namespace std; int n; double p,r; vector<int>v[100009]; //父节点下标,深度 //有一个测试点未过是因为maxnum应该赋值为0 但是我赋值为1了 如果是只有一个结点的极端请况就会出错maxnum就会变为2(注意) int maxdepth=0,maxnum=0; //注意重置maxnum.原创 2021-01-14 22:51:31 · 99 阅读 · 0 评论 -
pat-1094
#include<iostream> #include<vector> using namespace std; int n,m; //层号直接与hashmap对应 int book[102]={0}; vector<int>a[100]; void dfs(int index,int level) { book[level]++; //叶节点那一层的大小本身为0所以直接是终止条件 for(int i=0;i<a[index].size();i++) .原创 2021-01-14 21:00:43 · 167 阅读 · 0 评论 -
pat-1099
#include<iostream> #include<algorithm> #include<vector> using namespace std; struct node{ int data,index,l,r,level; }a[109]; int b[102]; vector<node>ans; int cnt=0; void dfs(int root,int index,int level) { if(a[root].l!=-.原创 2021-01-14 19:36:35 · 152 阅读 · 0 评论 -
pat-1102
#include<iostream> #include<vector> #include<algorithm> using namespace std; int n,a[19][2]; //保存镜像中序遍历 struct node{ int id,l,r,index,level; }; vector<node> v1; //还需要层序号 //序号之间没有代差是同层的简单易行(注意) void dfs(int root,int index,int le.原创 2021-01-14 16:26:08 · 139 阅读 · 0 评论 -
pat-1103
#include<iostream> #include<vector> #include<cmath> using namespace std; int n,k,p; //1.最终答案2.临时答案3.最终最大值4,临时最大值 int index=-1; int maxl=-1; //最终答案要初始化因为他有可能没答案要给出没答案的判别 //建表 ^p>n停止 vector<int> tempans,ans,init; void inita() .原创 2021-01-14 11:09:57 · 160 阅读 · 0 评论 -
pat-1106
#include<iostream> #include<vector> #include<math.h> using namespace std; int n; double p,r; int mindepth=1000000000; //最好带个零防止不够 vector<int> v[100009]; //最小个数信息注意条件重置 int minnum=1; void dfs(int index,int depth) { //递归边界避免出门即.原创 2021-01-13 20:20:46 · 170 阅读 · 0 评论 -
pat-1110
#include<iostream> #include<stdio.h> using namespace std; int n,maxn=-1,ans=-1,have[100]; struct node{ //int 前面不能是逗号(注意) int l, r; }a[100]; //root为根节点 index为我们重新编的号码 void dfs(int root,int index) { if(index>maxn) { maxn=index; //把最.原创 2021-01-13 16:24:42 · 170 阅读 · 2 评论 -
pat-1115
#include<iostream> #include<vector> using namespace std; //这样声明num(1000)与num【1000】有什么区别 vector<int> num(1000); int n,a; struct node{ int v; //前面需不需要加struct struct node*left; struct node*right; }; //传入参数要有根节点有值 //返回参数为node node* .原创 2021-01-13 11:49:51 · 224 阅读 · 1 评论 -
pat-1119
#include<iostream> #include<vector> using namespace std; vector<int> in,pre,post; int a; bool unique=true; int n; //需要四个变量确定范围 void getin(int prel,int postl,int postr) { //段错误可能使边界写的不对 (注意) if(postl>=postr){ if(postl==postr) .原创 2021-01-13 00:47:29 · 180 阅读 · 0 评论 -
pat-1127
#include<iostream> #include<vector> #include<queue> using namespace std; int n,root; int tree[35][2]; //struct 最后要加; struct node {int index,depth; }; //这如果不在result后面加大小会出现问题,也就是vector最好要指定大小;(注意) vector<int> in,post,result[35]; .原创 2021-01-12 16:25:11 · 161 阅读 · 0 评论 -
pat-1138
#include<iostream> #include<vector> using namespace std; bool flag=false; vector<int>pre,in; //代表先序遍历中根节点, 左子树在中序遍历中的起始节点,左子树的结束节点(完整的一棵子树的位置) void postorder(int prei,int lin,int rin) { if(lin>rin||flag==true) return; int i=lin;.原创 2021-01-11 21:58:21 · 153 阅读 · 0 评论 -
pat-1147
#include<iostream> #include<vector> using namespace std; int m,n,ismin=1,ismax=1; int a[1009]; vector<int> v; void postorder(int j) {//没写终止条件 递归先写终止条件(注意) if(j>=n+1) return; postorder(j*2); postorder(j*2+1); printf("%d%s",a[j].原创 2021-01-11 16:59:08 · 98 阅读 · 0 评论 -
pat-1155
//PAT 1155 #include<iostream> #include<vector> using namespace std; vector<int> v; //全局变量与局部变量要分清 int n,a[1009],ismin=1,ismax=1;//输入: n 结点个数 ,a层序遍历数组值 ,判断堆的逻辑判断值 void dfs(int j) { //终止条件 if(j*2>n&&j*2+1>n) { if(j<.原创 2021-01-11 14:20:49 · 149 阅读 · 1 评论