
===数据结构===
YYyyCCCcccBb
觉得为时已晚的时候,恰恰是最早的时候。
展开
-
已知前序中序->构建二叉树
二叉树前序: 根 - > 左 - > 右 前序给出的第一个节点为根节点二叉树中序: 左 - > 根 - > 右 中序可以在前序的基础上将树的左孩子,右孩子,完全确定。 下面就是一个递归的过程每次递归过程中 拿当前传入的前序遍历的首节点 找到中序遍历的该首节点的位置。并将其划分为左右两个子树。并链接在结构体指针上#include #include #原创 2016-06-16 09:41:34 · 436 阅读 · 0 评论 -
1119. Pre- and Post-order Traversals (30)
思路: 对于前序来说 根--左-- 右。 后序 左--右--根。 所以可以用后序分割前序,从而确立树。至于一直说只有拥有了中序才可以唯一确定树是因为 中序可以判断左右子树的关系。但是如果没有的话,如果只有左子树或者只有右子树是无法判断。因此用这个方法来确定是否唯一自己写的时候递归写乱了,参考的http://blog.youkuaiyun.com/liuchuo/article/details/52原创 2017-02-25 12:44:04 · 256 阅读 · 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 · 395 阅读 · 0 评论 -
URAL 2019 Pair: normal and paranormal
题意:给定灵魂猎手,射杀灵魂, 只能射直线,而且要求弹道不能重叠。问题是: 灵魂猎手射杀的是第几个幽灵灵魂猎手是大写字母,幽灵是小写字母。思路:压栈,如果可以匹配就弹出。比赛看错题了。看成第几个开枪了。就很ZZ#include #include #include #include #include #include #include using namespa原创 2017-04-30 20:04:24 · 262 阅读 · 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 · 208 阅读 · 0 评论 -
HDU 6040 Hints of sd0061
题意:调用n次给出的函数,之后找第k小的数字,数据量到1e7,sort会t.因此可以简化sort(每次快排分治的位置如果是k就跳出)。这个想法有现成的函数nth_element。思路:具体的功能是 (start, start+n ,end)。把第n大的位置放在数组的n号位置。之后从后往前扫,因为这样可以简化end的位置,加快速度,否则会TLE。#includeusing na原创 2017-07-27 11:39:50 · 366 阅读 · 0 评论 -
hdu 5033 ( Building ) 单调栈
题意: 给出建筑物位置与高度,以及人的位置,询问人看到天空的最大角度思路:对于每个位置,人的视野受到左侧与右侧楼与这个点相连的直线 , 左侧斜率最小的 以及右侧斜率最大的 两条直线限制,如果暴力枚举显然会T可以处理为一个栈的形式: 以左侧楼的限制为例:右侧同理 对于每个位置 如果这个位置是楼,就扔进先除去所有栈中比它高度低的, 再以当前点为基准,所描栈中的点,确保栈中点的到当原创 2017-10-10 15:50:07 · 308 阅读 · 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, YueAn AVL tree is a self-balancing原创 2017-11-14 15:53:00 · 171 阅读 · 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 · 133 阅读 · 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 · 321 阅读 · 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 · 238 阅读 · 0 评论 -
已知中后序遍历-->建立二叉树-->层序输出
二叉树后序: 左 - > 右 - > 根 后序给出的最后一个节点为根节点二叉树中序: 左 - > 根 - > 右 中序可以在前序的基础上将树的左孩子,右孩子,完全确定。 下面就是一个递归的过程每次递归过程中 拿当前传入的后序遍历的尾节点 找到中序遍历的该尾节点的位置。并将其划分为左右两个子树。并链接在结构体指针上#include原创 2016-06-16 10:07:02 · 401 阅读 · 0 评论 -
天梯赛L2-010排座位---并查集
L2-010. 排座位时间限制150 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,原创 2016-06-16 23:04:33 · 901 阅读 · 0 评论 -
hdu 1988-More is better-带权并查集
A - More is betterTime Limit:1000MS Memory Limit:102400KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionMr Wang wants some boys to help him with a project. Because the原创 2016-07-21 17:38:00 · 432 阅读 · 0 评论 -
1212 无向图最小生成树
prime算法裸题。思路:每次找到从已经连通的节点中找到一个权值最小的边走出去,注意要走到没有连通的节点,因此需要vis数组标记已走的节点。同时在每次走出去后,要更新这个刚走出去的节点到其他节点的最小值。#include#include#include#include#include#include#include#include#include#include原创 2016-09-18 20:31:35 · 302 阅读 · 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 · 306 阅读 · 0 评论 -
PTAA-1043-Is It a Binary Search Tree (25)
题意:给出二叉搜索树的要求,询问按要求建树,正常建树和镜像建树是否其一满足条件,如果满足就输出后序遍历#include#include#include#include#include#includeusing namespace std;typedef long long LL;int ansl[1005];int ansr[1005];int poster[1005]原创 2016-12-09 21:08:32 · 249 阅读 · 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 · 588 阅读 · 2 评论 -
天梯赛L2-011玩转二叉树----已知前序中序建树---输出层序遍历
L2-011. 玩转二叉树时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数原创 2016-06-16 09:56:21 · 882 阅读 · 0 评论 -
二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:想了好久,我觉得最关键的还是还原出中序的想法, 要时刻保留之前小的节点。拿到了小的节点,就可以为所欲为。 class Solution {public: TreeNode* Convert(TreeNode* pRootOfTree) { ...原创 2018-03-18 15:50:09 · 145 阅读 · 0 评论