已知前序遍历和中序遍历,求后序遍历的程序实现
来源:互联网 发布:怎样注册淘宝开网店 编辑:程序博客网 时间:2024/05/16 05:08
已知两种遍历,求第三种遍历是数据结构的常考题, 现在用编程的方式来实现:
已知前序遍历和中序遍历, 求后序遍历.
虽然这个问题我们用手画画就得出答案了,而编程的话反而不知道如何下手. 实际上,我们都会直观地知道关于遍历的问题肯定使用堆栈或者递归的方式完成. 而递归则更好理解.
后续遍历为 左子树-右子树-根. 而中序遍历中, 每个节点的左右子树都分列两端. 所以我们可以以中序遍历为基础来得到后序遍历. 而前序遍历可以提供给我们当下根节点的位置(因为前序遍历优先遍历根节点, 因此从前读到后就是所有的 根.
说的不太清楚, 程序很好理解:
#include<iostream>#include<algorithm>#include<string>using namespace std;string inorder,preorder;int n=-1;void f (int i,int j){if(i>j)return;n++;int k;for( k=i;k<=j;k++){if(inorder[k]==preorder[n])break;}f(i,k-1);f(k+1,j);cout<<inorder[k];}int main(){cin>>preorder>>inorder;f(0,preorder.length()-1);}n 从前序序列中从前往后走,第一个点是根节点, 所以根据这个点将中序序列分成两半,然后最后打印这个点(后序遍历).
在每一次递归中, 每个递归的根节点都是按递归的先后顺序出现在前序序列中的
0 0
- 已知前序遍历和中序遍历,求后序遍历的程序实现
- 3.14(c程序实现)已知二叉树的前序遍历和中序遍历,求后序遍历
- 已知前序遍历和中序遍历,求后序遍历
- 已知前序遍历和中序遍历,求后序遍历
- 已知前序遍历和中序遍历,求后序遍历
- 已知前序遍历和中序遍历求后序遍历
- 已知中序遍历和前序遍历,求后序遍历
- 已知树的前序遍历和中序遍历,求后序遍历的方法(转)
- 已知树的前序遍历和中序遍历,求后序遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知二叉树的前序遍历和中序遍历求后序遍历
- 【算法入门经典】 已知树的前序遍历和中序遍历,求后序遍历
- 已知二叉树的前序遍历和中序遍历求后序遍历(二叉树)
- 已知前序遍历和中序遍历的结果求后序遍历
- 二叉树系列:已知二叉树的中序遍历和前序遍历,求后序遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知前序遍历和中序遍历求后序遍历和层次遍历
- SQL SERVER 将多条记录转化为一条输出
- backbone.js 初探实例 (推荐阅读)
- 自定义viewgroup里面嵌套viewgroup布局出问题,如fill_parent失效
- hdu 2084
- extjs
- 已知前序遍历和中序遍历,求后序遍历的程序实现
- C++primer plus第六版课后编程题答案7.2
- java框架中 一些jar包的作用
- poj2255 由前序遍历和中序遍历导出后序遍历
- hdu2018&杭电oj_2018(递归)
- UVA 11992 Fast MatrixOperations(线段树)
- Dom4j 解析
- 钢琴游戏展厅
- 如何自己写一个网络爬虫