给定中序和后序遍历,求前序序列(C++递归方式实现)

本文介绍了一种通过已知二叉树的后序和中序遍历来构造前序遍历的方法。使用递归方式处理左右子树,最终实现从后序和中序遍历得到前序遍历的目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

输入后序和中序,求中序遍历。

算法:

 1 void f2(string &pre,string in, string post)
 2 {
 3     if(post.length()==0) //序列为空结束
 4         return;
 5     int n=post.length()-1; //根节点
 6     char ch=post[n];
 7     pre+=ch;//根节点存入前序中
 8  
 9     //处理左子树
10     f2(pre,in.substr(0,in.find(ch)),post.substr(0,in.find(ch)));
11 
12     //处理右子树
13     f2(pre,in.substr(in.find(ch)+1,in.length()-in.find(ch)-1),post.substr(in.find(ch),in.length()-in.find(ch)-1));
14     
15 }
16 void main()
17 {
18 string pre="";  //ABCDEF
19     string in="CBAEDF";
20     string post="CBEFDA";
21     f2(pre,in,post);
22     cout<<pre<<endl;
23 }

 

转载于:https://www.cnblogs.com/tianjiqx/p/5312185.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值