根据树的两种遍历序列求第三种遍历序列
来源:互联网 发布:淘宝市场行情 编辑:程序博客网 时间:2024/05/23 14:54
只知道先序序列和后序序列是无法求出唯一的树,所以不做讨论。
注意内存的释放,这里还没做- -
#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct node{char c;node *l, *r;node(){l = NULL, r = NULL;}}root1,root2;char first[100], mid[100], last[100];void preSearch(node *root)//先序遍历树{if(root != NULL){printf("%c", root->c);preSearch(root->l);preSearch(root->r);}return ;}void midSearch(node *root)//中序遍历树{if(root != NULL){midSearch(root->l);printf("%c", root->c);midSearch(root->r);}return ;}void postSearch(node *root)//后序遍历树{if(root != NULL){postSearch(root->l);postSearch(root->r);printf("%c", root->c);}return ;}void BuildTreeFromPreAndMid(node *root, int ll, int lr, int len, int &now)//根据中序和先序求树{root->c =*(first + now);int pos = (int)(strchr(mid, *(first + now)) - mid);now++;if(now >= len)return ;if(pos - 1 >= ll){node *t = new node;root->l = t;BuildTreeFromPreAndMid(root->l, ll, pos - 1, len, now);}if(pos + 1 <= lr){node *t = new node;root->r = t;BuildTreeFromPreAndMid(root->r, pos + 1, lr, len, now);}}void BuildTreeFromPostAndMid(node *root, int ll, int lr, int len, int &now)//根据中序和后序求树{root->c =*(last + now);int pos = (int)(strchr(mid, *(last + now)) - mid);now--;if(now < 0)return ;if(pos + 1 <= lr){node *t = new node;root->r = t;BuildTreeFromPostAndMid(root->r, pos + 1, lr, len, now);}if(pos - 1 >= ll){node *t = new node;root->l = t;BuildTreeFromPostAndMid(root->l, ll, pos - 1, len, now);}}int main(){gets(first);gets(mid);gets(last);int now = 0;BuildTreeFromPreAndMid(&root1, 0, strlen(first) - 1, strlen(first), now);int now2 = strlen(last);BuildTreeFromPostAndMid(&root2, 0, strlen(last) - 1, strlen(last), now2);postSearch(&root1);preSearch(&root2);return 0;}
- 根据树的两种遍历序列求第三种遍历序列
- 根据树的两种遍历序列求第三种遍历序列
- 二叉树 已知 两种遍历序列 求第三种遍历序列
- 已知两种遍历序列求原始二叉树
- 已知两种遍历序列求原始二叉树
- 根据树的前序遍历、中序遍历、后序遍历中的两种遍历求第三种遍历结果
- 二叉树面试题--已知二叉树的两种遍历序列,求出另一种遍历序列
- 二叉树面试题--已知二叉树的两种遍历序列,求出另一种遍历序列
- 已知二叉树的两种遍历序列重建树
- 已知两种二叉树的遍历,求第三种
- 二叉树三种遍历方法(根据两种排序求第三种的顺序)
- 根据二叉树的前序遍历序列和中序遍历序列求二叉树的后序遍历序列
- 知道其两个遍历序列,求其第三种遍历序列的问题。
- 二叉树给出两种遍历序列(含中序遍历)创建一颗先序遍历二叉树
- 根据二叉树的两种遍历求二叉树的结构
- 根据树遍历序列求解树结构
- 根据遍历序列确定二叉树
- 根据遍历序列确定二叉树
- linux获取文件大小[c]
- 程序设计思想及范例(1)求和/求积问题
- 丰田造世界首辆意志控制变速自行车
- VMware vSphere 5.0 五大改变
- javascript 多步处理,根据javascript高性能一书自己封装的一个多步处理函数对象
- 根据树的两种遍历序列求第三种遍历序列
- hdu 5.1.8 How Many Answers Are Wrong
- MFC积累---20111123 MFC与MySql的链接 VS2008
- 插件
- SQL2008 之压缩表
- zoj 2110
- php.ini中Magic_Quotes_Gpc开关设置
- 程序设计思想及范例(2),遍历问题,字符统计问题
- 转:wince 常见问题 1