【树】根据前序序列和中序序列写出二叉树
来源:互联网 发布:apache rewrite https 编辑:程序博客网 时间:2024/05/17 13:05
首先感谢小建建学长的帮助,
用数组实现
前序序列char pre[100]="dacebhfgi";
中序序列char mid[100]="dcbehagif";
/*根据前序序列和中序序列写出二叉树序列*/#include<iostream>#include<cstring>#include<stdio.h>using namespace std;const int maxn=1000;char pre[100]="dacebhfgi";char mid[100]="dcbehagif";char tree[maxn*4];/* i,j分别是前序序列的头节点和尾节点, a, b分别是中序序列子区间的头尾节点,*/void buildTree(int i,int j,int a,int b,int m)//m是节点的位置{ if(b<a||j<i) return; if(b==a) {tree[m]=mid[b];return ;}//最后一个值一定是mid[b]! int ii,tag; char root=pre[i]; for(ii=a;ii<=b;ii++) if(mid[ii]==root) {tag=ii;tree[m]=root;break;}///ii和i千万别混了 buildTree(i+1,i+tag-a,a,tag-1,m*2+1); buildTree(i+tag-a+1,j,tag+1,b,m*2+2);///注意pre在右边的搜索范围!会缩短成后半部分!}/* a bcd efg 中左右 cbd a feg 左中右!注意他们的范围 */int main(){ int n=strlen(pre); memset (tree,' ',sizeof(tree)); buildTree(0,n-1,0,n-1,0); for(int i=0;i<100;i++) cout<<i<<" " <<tree[i]<<endl; return 0;}
0 0
- 【树】根据前序序列和中序序列写出二叉树
- 根据前序和中序序列重建二叉树
- 根据前序和中序序列确定二叉树
- 根据前序和中序列 重建二叉树
- 根据中序序列和前序序列,求二叉树的后序序列
- 根据二叉树的前序序列和中序序列得到后序序列
- 根据前序遍历序列和中序遍历序列构造二叉树
- 根据前序遍历序列和中序遍历序列构造二叉树算法
- [LeetCode] 根据前序序列和中序序列重建二叉树
- 如何根据前序遍历序列和中序遍历序列确定二叉树
- 根据前序遍历序列和中序遍历序列重建二叉树
- 根据前序遍历序列和中序遍历序列构造二叉树算法
- 根据前序遍历序列和中序遍历序列构造二叉树
- 根据前序遍历序列和中序遍历序列重建二叉树
- 根据前序遍历序列和中序遍历序列创建二叉树
- 根据前序序列和中序序列重建二叉树
- 如何根据前序遍历序列和中序遍历序列确定二叉树
- 根据前序遍历序列和中序遍历序列构造二叉树算法
- MKMapView 添加图片
- 2013-12-11-window.returnvalue兼容性
- 在表中移动,删除 row,section
- 如何配置https访问tomcat
- 嵌入式 wget初学教程
- 【树】根据前序序列和中序序列写出二叉树
- 【分享】各种感情(喜怒哀乐)新浪微博情感200万条
- 2013-12-11用ChooseColor调用API的调色板
- 文件操作工具类
- 基于MINA框架快速开发网络应用程序(转)
- C# 创建一个文件夹快捷方式
- java 约瑟夫问题
- Java 多线程详解
- 嵌入式 hi3518c中使用wget并使用sed获取下载进度信息