- 浏览: 205037 次
- 性别:
- 来自: 武汉
-
文章分类
- 全部博客 (137)
- c++ (74)
- c++,算法,回溯 (2)
- DP问题。 (9)
- DP问题,0/1背包问题 (3)
- 数学问题 (6)
- 贪心算法 (10)
- 排序 (16)
- 数据结构 (7)
- 容器 (2)
- 模拟问题 (2)
- 水题 (8)
- 并查集 (3)
- 非技术 (2)
- 素数问题 (1)
- DFS (3)
- 二叉树 (1)
- 递归 (1)
- 图论 (5)
- 最小生成树 (5)
- 最短路径 (6)
- bell_flaod算法 (2)
- hash (3)
- 二分查找 (1)
- 搜索 (5)
- BFS (5)
- STL (3)
- 字符串hash (1)
- 拓扑排序 (1)
- 字典树 (4)
- 哈弗曼树 (1)
- KMP (7)
- 线段树 (9)
- 树状数组 (6)
- 全排列 (2)
- DP问题 (2)
- LCS (1)
- 最长不下降子序列 (2)
- 面试经验 (3)
这题要是做数据结构的练习题挺好的。就是给出前序和中序序列,要求后序序列。在先序序列中,第一个元素为二叉树的根,之后为它的左子树和右子树的先序序列;在中序序列中,先是左子树的中序序列,然后是根,再就是右子树的中序序列。由此就可以递归的建立起这棵二叉树了。
递归有时真的很美。。。
Node* create(const string& pres,const string& ins) { Node* root; if(pres.length()>0) { root=new Node; root->data=pres[0]; int index=ins.find(root->data); root->left=create(pres.substr(1,index),ins.substr(0,index)); root->right=create(pres.substr(index+1),ins.substr(index+1)); } else root=NULL; return root; }
具体代码如下:
#include<iostream> #include<string> using namespace std; struct node { char data; node *lchirld; node *rchirld; }; node *create(string pre,string in) { node *root; root=NULL; if(pre.length()>0) { root=new node; root->data=pre[0]; int index=in.find(root->data); root->lchirld=create(pre.substr(1,index),in.substr(0,index)); root->rchirld=create(pre.substr(index+1),in.substr(index+1)); } return root; } void postorder(node *&root) { if(root!=NULL) { postorder(root->lchirld); postorder(root->rchirld); cout<<root->data; } } int main() { string pre,in; while(cin>>pre>>in) { node *root; root=create(pre,in); postorder(root); cout<<endl; } return 0; }
另外在本题中用到了string文件库的两个函数find()与substr();
具体解释如下:
是s.find(args)在S中查找args第一次出现的位置下标。而substr()有以下几种操作
1、s.substr(pos,n) 返回一个string类型的字符串,它包含s中从下标pos开始的n个字符。
2、s.substr(pos) 返回一个string类型的字符串,它包含从下标pos开始到s末尾的所有字符。
3.s.substr()返回s的副本。
发表评论
-
虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
2013-08-29 14:34 861虚函数:虚函数是C++中用于实现多态(polymorphis ... -
排序算法总结
2013-05-17 11:00 859选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, ... -
poj 3122
2012-12-11 19:51 892题意:作者要开一个生日party,他现在拥有n块高度都为1 ... -
poj 3273
2012-12-11 16:49 1002题意:给你天数n,和每天需要花的钱,让你把这些天分成m份(每份 ... -
字典树学习材料
2012-05-30 14:29 986字典树,又称单词查找树,Trie树,是一种树形结构,典型应 ... -
poj 1159
2012-05-28 19:08 1469题目大意:给你一段字符串,让你求出在中间最少加入几个字符 ... -
poj 3176
2012-05-28 14:47 1049大致题意: 输入一个n层的三角形,第i层有i个数,求从第 ... -
poj 1260
2012-05-28 09:54 1635题意解释: 有n个等级的珠宝,等级依次升高,等级越高价钱越高 ... -
poj 1836
2012-05-28 09:22 2741是POJ2533的扩展题。题意不难,令到原队列 ... -
poj 2533
2012-05-26 15:36 1300在做这道题目之前,首先让我们了解一下什么是LIS算法,LIS俗 ... -
poj 3267
2012-05-26 09:43 821从程序可以看出,第i个位置到L所删除的字符数,总是先取最坏情况 ... -
poj 1276
2012-05-25 16:20 2430题意: 这道题的意思是给你一堆钱,各种面值的都有,比 ... -
poj 1094
2012-05-25 13:54 1131题意:给出字母个数,和有限个有序对(a<b)求出能确定字 ... -
poj 3393
2012-05-23 17:00 1277大致题意: 科普文一篇,文章80%都是无用信息,因为 ... -
poj 3007
2012-05-14 10:21 1009大致题意: 给定一个字符串,从任意位置把它切为两半, ... -
poj 3096
2012-05-10 21:09 1041题意: 定义D-pairs表示取字符串s中相距为D的两个字母 ... -
poj 1426
2012-04-26 20:11 2184大致题意: 给出一个整数n,(1 <= n <= ... -
poj 1797
2012-04-24 15:05 1639题目大意是就是何处一个图,n个顶点和m条边,每个边都有最大承载 ... -
poj 1338
2012-04-23 10:20 1276题意:题目意思是求由2,3,5的乘积组成的数从大到小排列,从1 ... -
poj 2021
2012-04-19 15:00 970题意:Ted今年100岁,给出n对他家族的关系:“父 ...
相关推荐
poj2255代码8 4 给你前序遍历和中序遍历求后续遍历
【标题】"POJ2255-Tree Recovery" 是一个来自北京大学在线判题系统POJ(Problem Set of Peking University)的编程题目。这个题目主要涉及到数据结构和图论的知识,尤其是树的恢复问题。 【描述】"北大POJ2255-Tree...
提示:二叉树遍历而已,给出前序和中序,求后序 解题思路 1、前序遍历的第一个字母必是 根 2、在中序遍历的字母串中找出 根字母,那么根字母左右两边的字符串就分别是它的左、右子树 3、利用递归复原二叉树(把...
建树,树的遍历访问,联系数据结构不错的题目
4. poj3006、poj2255、poj3094(可能的题目类型:字符串处理):这类题目可能需要对字符串进行操作,如查找子串、替换、统计字符出现次数等,可能会用到字符串处理函数。 除了POJ的题目,还有浙江大学ACM集训队的...
- poj2255 - **应用场景**:适用于可以被分解为子问题的复杂问题,如快速排序、归并排序、汉诺塔问题等。 **4. 递推** - **定义**:递推是指根据已知的基础情况和递推关系,逐步计算出未知的情况。 - **示例题目**...
构造法和模拟法在poj3006、poj2255、poj3094等题目中有所涉及。 二、图算法 图算法在ACM竞赛中占据重要地位,包括深度优先遍历、广度优先遍历、最短路径算法(如Dijkstra、Bellman-Ford、Floyd和堆+Dijkstra)、...
3. 递归和分治法:将问题分解为较小的子问题解决,如poj2255。 4. 递推:利用前一步的结果推导出下一步,如poj3295。 5. 构造法:直接构造符合要求的解,如poj1503。 6. 模拟法:按照现实或理论过程进行仿真,如poj...
最后,建议在OJ(在线判题)平台上进行练习,如POJ提供的水题,如poj3299、poj2159、poj2739、poj1083、poj2262、poj1503、poj3006、poj2255、poj3094等,这些题目可以帮助巩固基础,增强信心。 通过系统地学习和...
* 中短代码:1014、1281、1618、1928、1961、2054、2082、2085、2213、2214、2244、2247、2255、2257、2258、2260、2265、2272、2273、2275、2287、2299、2329、2376 * 中等代码量:1001、1018、1037、1039、1054、...
* 2255 Tree Recovery * 2084 Game of Connections * 1906 Three powers * 1835 宇航员 * 1799 Yeehaa! * 1607 Deck * 1244 Slots of Fun * 1269 Intersecting Lines * 1299 Polar Explorer * 1183 反正切函数的应用...
1129 1149 1154 1165 1182 1185 1190 1191 1201 1251 1273 1275 1276 1286 1322 1338 1363 1364 1401 1456 1459 1564 1579 1637 1657 1658 1679 ...2104 2112 2115 2186 2255 2352 2369 2406 2409 2421 2479 2480 2498
1001 1002 1003 1004 1005 1006 1007 1008 1011 1012 1013 1014 1015 1017 ...2255 2286 2304 2352 2356 2362 2363 2377 2385 2386 2388 2392 2395 2406 2411 2418 2421 2441 2479 2485 2487 2488 2506 2513 2521 2524 ...
- **【HDU 2255】奔小康赚大钱**:可能需要利用KMP算法解决字符串匹配问题,寻找特定模式的出现次数。 - **【HDU 1533】Going Home**:同样是字符串匹配,可能需要求解最短的匹配长度或找出所有匹配位置。 - **【HDU...