二叉树已知中序后序输出前序

来源:互联网 发布:网络推广公司有哪些 编辑:程序博客网 时间:2024/05/29 17:05

后序:2 5 4 6 3 1(左右根)

中序:2 1 5 4 3 6(左根右)

分析:

因为二叉树的根总是在后续序列的最后一位,所以可以很容易得到root。在中序序列中找到root,root左边是左子树,右边是右子树。每次在后续序列中找到root,左子树的root即为root-(end-i+1),end-i+1是在中序序列中计算右子树的元素个数。右子树的root-1。在中序序列中找到root的位置i,左子树的start还是start,与其父亲的start相同,左子树的end是i-1;右子树的start是i+1,end与其父亲的end相同。

#include<iostream>using namespace std;int post[]={2,5,4,6,3,1};int in[]={2,1,5,4,3,6};void pre(int root,int start,int end){int i=start;if(start>end)return;while(in[i]!=post[root])i++;cout<<post[root];pre(root-end+i-1,start,i-1);pre(root-1,i+1,end);}int main(){pre(5,0,5);system("pause");return 0;}


0 0
原创粉丝点击