算法题目
lgh544
这个作者很懒,什么都没留下…
展开
-
PTA 1147 Heaps (30分)
题目链接:Heaps思路:根据层次遍历建树。从根节点做一次dfs,记录每个节点的父节点。依次检查每一个元素是否合法即可,即但凡有一个元素大于父亲元素就不是Max Heap,但凡有一个元素小于父亲元素就不是Min Heap。代码实现:#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int,int> PII;typedef struct Tnode *p;原创 2020-11-25 22:50:32 · 97 阅读 · 0 评论 -
PTA 1143 Lowest Common Ancestor (30分)
题目地址:Lowest Common Ancestor思路:根据二叉搜索树的特点,其中序遍历就是从小到大的排列,所以可以根据中序遍历加前序遍历构建二叉树。从根节点开始dfs得到每个节点的深度及父亲。利用LCA算法不断的找最近公共祖先即可。可以利用set查找元素。代码实现:#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int,int> PII;type原创 2020-11-25 22:43:55 · 122 阅读 · 0 评论 -
PTA 1133 Splitting A Linked List (25分)
题目地址:Splitting A Linked List思路:所有节点用结构体{id,data,next}存储。遍历链表,依次找出在链表中的节点,放入容器v中。把节点分成三类(负无穷,0),[0,k],(k,正无穷),按段,按先后顺序依次放进容器ans中,最后输出即可。代码实现:#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int,int> PII;t原创 2020-11-24 11:57:04 · 118 阅读 · 0 评论 -
PTA 1135 Is It A Red-Black Tree (30分)
题目地址:Is It A Red-Black Tree思路:根据二叉搜索树的特点,其中序遍历的结果就是从小到大的结果,再结合给出的前序遍历就可以构建出二叉树。从根节点开始搜索,若发现红色的节点,检查左,右儿子是否都是黑色节点,若存在红色节点则为No。从根节点开始搜索,检查每个节点的“深度”是否合法。特判根节点的颜色。代码实现:#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef p原创 2020-11-23 23:07:14 · 228 阅读 · 0 评论 -
PTA 1127 ZigZagging on a Tree (30分)
题目地址:PTA A1127 ZigZagging on a Tree思路:根据中序和后序序列建树。层序遍历该树,若该层flag为1直接打印,否则压入栈中逆序打印,每层flag要取反。代码实现:#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int,int> PII;typedef struct Tnode *p;const int N=35;int原创 2020-11-19 11:33:49 · 142 阅读 · 0 评论