二叉树
Ziiyan
这个作者很懒,什么都没留下…
展开
-
UVA - 112 Tree Summing
题目大意:给一个数和一棵树问是否有一叶子到根的值为该数。解题思路:递归,若当前节点无孩子(叶子)则判断和是否为所需数字。结束后需将尾部反括号读入以免影响下一个样例。#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<ctype.h> using namespa原创 2016-07-27 20:40:42 · 288 阅读 · 0 评论 -
UVA - 548 Tree
题目大意:给一棵树的中序遍历和后序遍历,找一叶子到根的值最小的叶子,若有多解,输出叶子本身最小的那个叶子。解题思路:根据中序遍历和后序遍历建树。后续的最后一个数是根节点,该数在中序中的前一个数是该数的左孩子,cnt 是左子树节点个数。dfs 求解。#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #incl原创 2016-07-27 20:41:23 · 174 阅读 · 0 评论 -
UVA - 297 Quadtrees
题目大意:四叉树,给 32 × 32 的格子涂色,p 表示将当前格子分为四个象限,根据 1、2、3、4 象限的顺序处理,e 不上色,f 将当前格子涂黑,问两个图重叠后涂黑的格子数是多少。解题思路:递归,二维数组模拟格子涂色,两轮后计算黑色格子数。#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inclu原创 2016-07-27 20:41:47 · 247 阅读 · 0 评论 -
UVA - 712 S-Tree
题目大意:满二叉树,节点值为 0 或 1。给出一个 n 表示该二叉树的深度,第二行 x3,x1,x2 表示从根节点开始每一层的值,第三行表示最后一层即叶子的值。接着给出要查找的次数 m,以下 m 行每行分别表示 x1,x2,x3 的值。有一颗小球从根节点出发,遇到 0 左走 1 右走,输出最后到达的叶子节点的值。解题思路:根据满二叉树做孩子为 2k,右孩子 2K+1 的特点解决。创建一个数组 lea原创 2016-07-28 16:07:23 · 242 阅读 · 0 评论 -
UVA - 327 Evaluating Simple C Expressions
题目大意:根据 ++、– 的性质计算,a = 1,b = 2……z = 26。输出计算结果和计算后各字母的值。解题思路:暴力模拟。每碰到一个字母,检查该字母前后是否存在前缀,若存在,将改字母对应的值 +1 或 -1,找到字母前的一个符号 + 或 -,进行对应计算,接着检查该字母是否存在后缀,若存在,将改字母对应的值 +1 或 -1。输出即可。注意自增符号前缀和后缀的计算顺序是不同的,有点难处理。#i原创 2016-07-28 16:07:44 · 163 阅读 · 0 评论 -
UVA - 839 Not so Mobile
题目大意:树状天平。每一行输入 w1,d1,w2,d2,若 w1×d1 == w2×d2,则平衡。当 w 为 0,说明有一个子天平,w1,w2 同时为 0,下一行给出 w1 的子天平信息。解题思路:递归输入,同时判断,不平衡时返回 0。#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cm原创 2016-07-28 16:08:05 · 184 阅读 · 0 评论 -
UVA - 10562 Undraw the Trees
题目大意:给出一棵树,先序遍历,输出结果。最外层给一对括号,每个节点的孩子节点用()包起,若无孩子节点,直接输出()。解题思路:递归,注意节点不一定是字母。若节点同列的下一行是 |,表示该节点有孩子,进入 dfs,无则直接输出括号。dfs(n, l ,r),n 表示当前层,l(l>0) 表示最左的节点,r 最右。距离根据 - 的长度来确定。#include<iostream> #include<cs原创 2016-07-28 16:08:29 · 186 阅读 · 0 评论