已知前序和中序求后序
来源:互联网 发布:游戏多核优化的多吗 编辑:程序博客网 时间:2024/05/22 08:25
假设前序遍历为 adbgcefh, 中序遍历为 dgbaechf
前序遍历是先访问根节点,然后再访问子树的,而中序遍历则先访问左子树再访问根节点
那么把前序的 a 取出来,然后查找 a 在中序遍历中的位置就得到 dgb a echf
那么我们就知道 dgb 是左子树 echf 是右子树,因为数量要吻合
所以前序中相应的 dbg 是左子树 cefh 是右子树 ;
下图为求出的二叉树的图形:
代码如下:
#include <iostream> #include <string> using namespace std; int find(const string &str, char c) { for (int i = 0; i < str.size(); ++ i) if (c == str[i]) return i; return -1; } bool PreMid(const string &pre, const string &mid) { if (pre.size() == 0) return false; if (pre.size() == 1) { cout << pre; return true; } //根节点是第一个元素 int k = find(mid, pre[0]); string pretmp = pre.substr(1, k); string midtmp = mid.substr(0, k); PreMid(pretmp, midtmp); pretmp = pre.substr(k + 1, pre.size() - k - 1); midtmp = mid.substr(k + 1, mid.size() - k - 1); PreMid(pretmp, midtmp); //变成后序遍历要最后输出节点的值 cout << pre[0]; } int main() { string pre, mid; while (cin >> pre >> mid) { PreMid(pre, mid); cout << endl; } }
- 已知前序和中序求后序
- 已知前序和中序求后序
- 已知前序,中序求后序
- 已知前序和中序求后序与已知中序和后序求前序的算法
- 6.3.3 二叉树重建 已知前序和中序求后序
- 已知树的前序和中序求后序 hdu 题目1710 Binary Tree Traversals
- HDU 1710 二叉树的遍历(已知前序和中序求后序)
- 已知前序和中序递归后序
- 已知前序遍历和中序遍历,求后序遍历
- 已知前序遍历和中序遍历,求后序遍历
- 已知二叉树的前序和中序,求后序
- 已知前序和中序遍历恢复二叉树
- 二叉树遍历:已知前序和中序,求后序
- 已知前序和中序,求后序遍历
- 二叉树:已知前序和中序,求后序
- 已知前序遍历和中序遍历,求后序遍历
- 二叉树 :已知前序和中序,求后序
- 已知前序遍历和中序遍历求后序遍历
- Dom与Sax,stax相比它们的优缺点是什么?
- PLSQL Developer设置及快捷键设置
- wordpress面包屑导航
- 对随机数的两种处理方法
- Qt应用中检测内存泄露——VLD
- 已知前序和中序求后序
- strlen与sizeof的区别
- Objective-C语法快速参考
- ADO.NET在开发中的部分使用方法和技巧
- python实现复杂范围重组
- 从数据库导出数据到word、excel、.txt _asp.net技巧
- 华为VRP模拟环境配置ip访问
- 巧用java的sort排序
- 使用Sqoop在HDFS和RDBMS之间导数据