前序遍历,中序遍历打印后序遍历的题目
#include<bits/stdc++.h>
using namespace std;
struct TreeNode
{
char elem;
TreeNode *leftchild;
TreeNode *rightchild;
};
void Post_order_traversal(char *Pre_order,char *In_order,int length)
{
if(length==0)
return;
TreeNode *node=new TreeNode;
node->elem=*Pre_order;
int rootIndex=0;
for(;rootIndex<length;rootIndex++)
{
if(In_order[rootIndex]==*Pre_order)
break;
}
//left
Post_order_traversal(Pre_order+1,In_order,rootIndex);
//right
Post_order_traversal(Pre_order+1+rootIndex,In_order+rootIndex+1,length-rootIndex-1);
cout<<node->elem;
}
int main()
{
char Inch[100];
char Prech[100];
cin>>Prech>>Inch;
int s=strlen(Inch);
Post_order_traversal(Prech,Inch,s);
}
本文介绍了一种基于前序和中序遍历来打印后序遍历的二叉树算法实现,通过递归方式,首先找到根节点,然后分别处理左子树和右子树,最终输出后序遍历结果。
1万+

被折叠的 条评论
为什么被折叠?



