树
文章平均质量分 72
LB_莫贺延碛
没智商,没毅力,仅仅有一点点运气。
努力向各位前辈大牛学习。
展开
-
poj3437
这道题当时看的眼都花了,明白之后还是没有什么思路,最后看别人的代码才算ac思路是这样的:对于读入的字符串,d表示下一层结点,计算出每个节点在二叉树 节点的层次,如果这个节点层次大于之前二叉树的高度,那么更新二叉树即可,重点在于处理好 d 字符拿样例1 来说,第一个 d 时 遍历结点1 之后 up ,而结点 1 在二叉树中的层次为 1 ,这时可以把二叉树高度更新为1,u之后返回0结点,继续原创 2014-08-08 19:00:32 · 727 阅读 · 0 评论 -
uva 712
#include #include #include #include #include #include #include using namespace std;const int maxn = 1024 + 512;int depth, kasenum, testnum = 0;char str[maxn], ch, ans[maxn]; int values[max原创 2016-09-30 19:37:12 · 402 阅读 · 0 评论 -
uva 548
由后续遍历和中序遍历推理出树的结构。使用递归方法做的,有点麻烦,,。注意好在递归过程中参数的设置#include #include #include #include #include #include using namespace std;const int maxn = 10000 + 1000;int inorder[maxn], postorder[maxn],原创 2016-09-30 19:34:00 · 286 阅读 · 0 评论 -
uva 297
#include #include #include #include #include #include using namespace std;typedef struct Tnode{ int color;//0 for white, 1 for black, -1 for parent. -2 for not sure Tnode* sons[4];}Node;原创 2016-09-30 19:30:54 · 354 阅读 · 0 评论 -
uva 112
#include #include #include #include #include using namespace std;const int maxn = 50000 + 100;int parent[maxn], fnode = -1;int values[maxn];bool isleaf[maxn];int num, root, target, nodeCnt原创 2016-09-30 19:29:31 · 319 阅读 · 0 评论 -
uva 699
#include#include#include #include using namespace std;const int maxn = 200;int sum[maxn];// 输入并统计一棵子树,树根水平位置为pvoid build(int p){ int v; cin >> v; if(v == -1) return; // 空树 s原创 2016-09-30 17:11:56 · 220 阅读 · 0 评论 -
uva 839
这道题直接通过递归计算,思路比较直观,如果树的节点是父节点,计算左右两个孩子节点的权重乘以重量进行判断就可以了。唯一注意的是需要用两个if 判断wl 和wr#include #include #include #include #include using namespace std;bool flag = true;int buildTree(){ i原创 2016-09-30 17:10:00 · 301 阅读 · 0 评论 -
uva 327
表达式求值,这道题的检测点很多, 给大家贴几个:a + bb - za+b--+c++c+f--+--af-- + c-- + d-++e++x++y--x--yx++-yx+--yx--+yx++-++yx++---yx--+++yx--+--yx+++--yx---++yz+d+c++-++b-a++b-++c+-原创 2016-09-30 17:05:41 · 251 阅读 · 0 评论 -
poj 1988 并查集
#include #include const int maxn = 100000 + 100;int set[maxn];//记录每个元素的栈低(代表元素)元素int top[maxn];//记录每个元素的栈顶元素int cnt[maxn];//j记录每个元素到栈低的元素个数int set_find(int p)//查找元素p的栈底元素,并进行路径压缩,并更新 p原创 2014-07-24 22:47:38 · 536 阅读 · 0 评论 -
poj 1703 并查集
#include #include using namespace std;const int maxn = 100000 + 10;int set[maxn + maxn ];//这道题是这样的思路,如果a,b是对立帮派(龙帮,蛇帮),那么a和b + n(b的对立帮派)是同一帮派,b 和 a+n(a的对立帮派)是同一帮派int set_find(int d){原创 2014-07-24 23:00:26 · 540 阅读 · 0 评论 -
poj2499
记得好像刘汝佳的入门经典里好像有这道题,这里原创 2014-08-08 19:08:42 · 625 阅读 · 0 评论 -
通过遍历求解二叉树结构poj2255
二叉树有三种遍历规则:前序遍历:根-左子树-右子树 (对应树的先遍历)原创 2014-08-08 19:20:01 · 431 阅读 · 0 评论 -
zoj1674
#include #include #include #include using namespace std;const int maxn = 1000 + 10;int layer[maxn];int parent[maxn];map mhash;int num = 0;void solve(int i){ string s1;原创 2014-07-25 22:33:15 · 472 阅读 · 0 评论 -
poj1145
这道题实际并不难理解,就是输入太恶心了,另外要注意的就是原创 2014-08-08 19:53:45 · 521 阅读 · 0 评论 -
poj1330
//当时在写这道题的时候#include #include #include using namespace std;const int N = 10000;vector a[N];int f[N],r[N];void DFS(int u,int dep){ r[u] = dep; for(vector::iterator i原创 2014-07-25 22:41:38 · 534 阅读 · 0 评论