===数据结构===
YYyyCCCcccBb
觉得为时已晚的时候,恰恰是最早的时候。
展开
-
已知前序中序->构建二叉树
二叉树前序: 根 - > 左 - > 右 前序给出的第一个节点为根节点 二叉树中序: 左 - > 根 - > 右 中序可以在前序的基础上将树的左孩子,右孩子,完全确定。 下面就是一个递归的过程 每次递归过程中 拿当前传入的前序遍历的首节点 找到中序遍历的该首节点的位置。并将其划分为左右两个子树。并链接在结构体指针上 #include #include #原创 2016-06-16 09:41:34 · 418 阅读 · 0 评论 -
1119. Pre- and Post-order Traversals (30)
思路: 对于前序来说 根--左-- 右。 后序 左--右--根。 所以可以用后序分割前序,从而确立树。 至于一直说只有拥有了中序才可以唯一确定树是因为 中序可以判断左右子树的关系。但是如果没有的话,如果只有左子树或者只有右子树是无法判断。 因此用这个方法来确定是否唯一 自己写的时候递归写乱了,参考的http://blog.csdn.net/liuchuo/article/details/52原创 2017-02-25 12:44:04 · 234 阅读 · 0 评论 -
Tyvj P1336 火车进栈(栈的顺序问题)
记录一下如何判断是否为出栈顺序 #include #include #include #include #include #include #include #include #include using namespace std; int n; int a[205]; int vis[205]; int cnt=0; bool judge() { int原创 2017-03-21 07:53:49 · 375 阅读 · 0 评论 -
URAL 2019 Pair: normal and paranormal
题意: 给定灵魂猎手,射杀灵魂, 只能射直线,而且要求弹道不能重叠。问题是: 灵魂猎手射杀的是第几个幽灵 灵魂猎手是大写字母,幽灵是小写字母。 思路: 压栈,如果可以匹配就弹出。 比赛看错题了。看成第几个开枪了。就很ZZ #include #include #include #include #include #include #include using namespa原创 2017-04-30 20:04:24 · 248 阅读 · 0 评论 -
单链表翻转
1。新建节点,把当前扫描的原始链表节点,插入新链表节点之前 #include #include using namespace std; typedef struct node * pnode; struct node { int data; pnode next; }; void add(pnode &head,pnode &tail) { int原创 2017-07-14 09:58:03 · 189 阅读 · 0 评论 -
HDU 6040 Hints of sd0061
题意: 调用n次给出的函数,之后找第k小的数字,数据量到1e7,sort会t.因此可以简化sort(每次快排分治的位置如果是k就跳出)。这个想法有现成的函数nth_element。 思路: 具体的功能是 (start, start+n ,end)。把第n大的位置放在数组的n号位置。 之后从后往前扫,因为这样可以简化end的位置,加快速度,否则会TLE。 #include using na原创 2017-07-27 11:39:50 · 343 阅读 · 0 评论 -
hdu 5033 ( Building ) 单调栈
题意: 给出建筑物位置与高度,以及人的位置,询问人看到天空的最大角度 思路: 对于每个位置,人的视野受到左侧与右侧楼与这个点相连的直线 , 左侧斜率最小的 以及右侧斜率最大的 两条直线限制,如果暴力枚举显然会T 可以处理为一个栈的形式: 以左侧楼的限制为例:右侧同理 对于每个位置 如果这个位置是楼,就扔进先除去所有栈中比它高度低的, 再以当前点为基准,所描栈中的点,确保栈中点的到当原创 2017-10-10 15:50:07 · 278 阅读 · 0 评论 -
1123. Is It a Complete AVL Tree (30)
1123. Is It a Complete AVL Tree (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue An AVL tree is a self-balancing原创 2017-11-14 15:53:00 · 156 阅读 · 0 评论 -
L2-012. 关于堆的判断
L2-012. 关于堆的判断时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:“x is the root”:x是根结点;“x and y are siblings”:x和y是兄弟结点;“x is the parent of y”:x是y的父结点;“...原创 2018-03-16 17:01:49 · 116 阅读 · 0 评论 -
1099. Build A Binary Search Tree (30)
思路: 依据给定的树结构填入数据,因为BST树的中序必定是递增的,所以排序即可 #include #include #include #include #include #include #include using namespace std; const int maxn=105; int cnt=0; struct node { int left,righ原创 2017-03-03 21:28:30 · 304 阅读 · 0 评论 -
51nod-1102 面积最大的矩形
思路: 单调栈,维护左右边界 #include #include #include #include #include #include using namespace std; typedef long long ll; ll a[50005]; ll l[50005]; ll r[50005]; int main() { int n; cin>>n; f原创 2017-01-17 16:09:57 · 210 阅读 · 0 评论 -
已知中后序遍历-->建立二叉树-->层序输出
二叉树后序: 左 - > 右 - > 根 后序给出的最后一个节点为根节点 二叉树中序: 左 - > 根 - > 右 中序可以在前序的基础上将树的左孩子,右孩子,完全确定。 下面就是一个递归的过程 每次递归过程中 拿当前传入的后序遍历的尾节点 找到中序遍历的该尾节点的位置。并将其划分为左右两个子树。并链接在结构体指针上 #include原创 2016-06-16 10:07:02 · 377 阅读 · 0 评论 -
天梯赛L2-010排座位---并查集
L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,原创 2016-06-16 23:04:33 · 879 阅读 · 0 评论 -
hdu 1988-More is better-带权并查集
A - More is better Time Limit:1000MS Memory Limit:102400KB 64bit IO Format:%I64d & %I64u Submit Status Description Mr Wang wants some boys to help him with a project. Because the原创 2016-07-21 17:38:00 · 403 阅读 · 0 评论 -
1212 无向图最小生成树
prime算法裸题。 思路: 每次找到从已经连通的节点中找到一个权值最小的边走出去,注意要走到没有连通的节点,因此需要vis数组标记已走的节点。 同时在每次走出去后,要更新这个刚走出去的节点到其他节点的最小值。 #include #include #include #include #include #include #include #include #include #include原创 2016-09-18 20:31:35 · 273 阅读 · 0 评论 -
PATA-1020. Tree Traversals (25)
题意: 给中序,后序,输出层序遍历 #include #include #include #include using namespace std; int Back[105]; int In[105]; typedef struct node *TreeBin; struct node { TreeBin left,right; int data; }; TreeBin原创 2016-12-09 19:18:40 · 287 阅读 · 0 评论 -
PTAA-1043-Is It a Binary Search Tree (25)
题意: 给出二叉搜索树的要求,询问按要求建树,正常建树和镜像建树是否其一满足条件,如果满足就输出后序遍历 #include #include #include #include #include #include using namespace std; typedef long long LL; int ansl[1005]; int ansr[1005]; int poster[1005]原创 2016-12-09 21:08:32 · 230 阅读 · 0 评论 -
已知树的先中序遍历--不建树--得到层序遍历
#include #include #include #include #include using namespace std; int Count=0; struct Node { int num; int lawyer; }; Node Floor[20]; bool cmp(struct Node a,struct Nod原创 2016-06-22 10:24:39 · 552 阅读 · 2 评论 -
天梯赛L2-011玩转二叉树----已知前序中序建树---输出层序遍历
L2-011. 玩转二叉树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数原创 2016-06-16 09:56:21 · 854 阅读 · 0 评论 -
二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:想了好久,我觉得最关键的还是还原出中序的想法, 要时刻保留之前小的节点。拿到了小的节点,就可以为所欲为。 class Solution { public: TreeNode* Convert(TreeNode* pRootOfTree) { ...原创 2018-03-18 15:50:09 · 135 阅读 · 0 评论