//给定一棵二叉树的前序遍历和中序遍历,求其后序遍历
#include <iostream>
#include <string.h>
using namespace std;
typedef struct BinTree
{
char data;
BinTree* lchild;
BinTree* rchild;
} BinTree;
void RebuildTree(BinTree* &Tree,char *pre,char *in,int len)
{
Tree = new BinTree;
if(Tree!=NULL)
{
if(len<=0)//递归截止条件
{
Tree = NULL;
return ;
}
int index = 0;
while(index<len&&*(pre)!=*(in+index))
{
//寻找当前的root结点(包含子树)
index++;
}
Tree->data = *(pre);
RebuildTree(Tree->lchild,pre+1,in,index);//去掉root结点
RebuildTree(Tree->rchild,pre+1+index,in+1+index,len-(index+1));//去掉左边和根节点
}
return ;
}
void PostOrderTravese(BinTree* Tree)
{
//后序遍历输出
if(Tree==NULL)
return;
PostOrderT
已知二叉树的两种遍历求另一种遍历(C++程序实现)
最新推荐文章于 2022-06-05 21:32:22 发布
本文介绍如何通过已知的前序和中序遍历,或者已知的中序和后序遍历,来求解二叉树的另一种遍历。通过递归算法,利用已知的两种遍历顺序重建二叉树结构,并输出对应的前序、中序或后序遍历结果。
摘要由CSDN通过智能技术生成