PAT甲级
霜雨蓝焰,
这个作者很懒,什么都没留下…
展开
-
PAT-A 1146 Topological Order
PAT-A 1146 Topological Order 判断一个序列是不是给定的有向无环图所生成的一个拓扑序列,将给定的序列从前开始遍历,当一个点为正确的拓扑序列时,遍历到他时度应该为0,然后再将它所连边度数减一。 #include<bits/stdc++.h> #define maxn 4000 using namespace std; int n,m; vector<int...原创 2019-11-20 16:59:09 · 187 阅读 · 0 评论 -
PAT-A 1147 Heaps
PAT-A 1147 Heaps 输入一个堆的层序序列判断它是不是一个最大(最小)堆。 众所周知,堆是个完全二叉树,它在顺序存储的时候储存序列即是层序序列。 所以,在遍历的时候判断一下即可, #include<bits/stdc++.h> using namespace std; int a[2000]; bool f; int sum; int t,n; void print(int...原创 2019-11-17 08:42:37 · 156 阅读 · 0 评论 -
PAT-A 1135 Is It A Red-Black Tree
PAT-A 1135 输入数据判断是否为一棵红黑树, 数据为正表示节点颜色为红,负为黑。 一个小结论——一颗二叉搜索树的前序遍历顺序即是他的节点插入顺序(虽然很显然 所以只需要建好树遍历判断即可 判断依据: 1.根节点为黑色(首先判断一下就行)。 2.每个红节点的儿子都是黑的。 3.从根节点到每一个叶子经过的黑节点个数相同。 通过DFS遍历一遍树即可得到结果。 #include<bits/s...原创 2019-11-17 00:19:07 · 164 阅读 · 0 评论 -
二叉树的重建
所谓二叉树的重建就是已知前序或后序和中序遍历(必须确定中序遍历否则不能确定唯一二叉树)得到原二叉树。 例: 7 1 2 3 4 5 6 7(中序遍历) 4 1 3 2 6 5 7(前序遍历) 前序遍历必然是从根节点先走左子树再走右子树,这一点和递归顺序相同,所以在每一次递归的时候可以根据本子树的根节点得到本子树左右子树在中序遍历中的区间,从而递归求解 #include<bits/stdc++...原创 2019-10-21 21:47:16 · 138 阅读 · 0 评论 -
PAT-A 1101 Quick Sort
1101 Quick Sort (25 分) There is a classical process named partition in the famous quick sort algorithm. In this process we typically choose one element as the pivot. Then the elements less than the pi...原创 2019-10-18 00:33:47 · 104 阅读 · 0 评论