二叉树重建
来源:互联网 发布:mac 免费的数据库软件 编辑:程序博客网 时间:2024/04/30 21:00
面试常考的一道题是二叉树的重建,比如给了先根遍历和中根遍历,让重构二叉树之类的,还有就是输出后根遍历。
例如:DBACEGF ABCDEFG。输出 ACBFGED
思路:先根遍历第一个字符是根,需要在中根遍历中找到它,就知道左右子树的先根遍历和后根遍历了。(递归)
代码:
void build(int n , char* s1 , char* s2 , char* s){if(n <= 0) return;int p = strchr(s2 , s1[0]) - s2;//找到根结点在中根遍历中的位置build(p , s1+1 , s2 , s);//递归构造左子树的后根遍历build(n-p-1 , s1+p+1 , s2+p+1 , s+p);//递归构造右子树的后根遍历s[n-1] = s1[0];//把根结点添加到最后}
主程序部分代码:
while(scanf("%s%s" , s1 , s2) == 2){int n = strlen(s1);build(n , s1 , s2 , ans);ans[n] = '\0';printf("%s\n",ans);}
还有一种常见的方法:先构造出二叉树,然后后根遍历,方法参见http://www.cnblogs.com/DiaoCow/archive/2010/04/17/1714273.html
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 第一次产生家的感觉,同时产生了何时能真正有个家的思考
- JAVA位运算
- 【vim】vim行首加入某字符
- sqlserver2005 安装及SQL 2005 SP3补丁安装详解
- 【Cocos2d-X(2.x) 游戏开发系列之三】最新版本cocos2d2.0x2.0.2使用新资源加载策略!不再沿用-hd、-ipad、-ipadhd添加后缀方式
- 二叉树重建
- 邂逅在华灯初上
- 面试训练树的镜像
- 如何完成在一个图片中,点击不同区域显示不同的结果
- 如何成为亿万富翁?据说看完这21个故事的人,30岁前都成了亿万富翁
- JVM类加载机制简介
- 风的世界里有海的七滴泪水
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
- 浏览器Http请求头部比较(多浏览器http请求头)