恢复二叉树

由前序中序遍历序列恢复二叉树,并按后序序列输出。前序中序序列存在s1,s2字符数组中,各字符代表节点且不相同:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct Tree
{
  char date;
  Tree *lchild;
  Tree *rchild;
};
char s1[30],s2[30];
int len;
int value[260];
void v()  //记录不同字符在s2中位置
{
  for(int i=0;i<len;i++)
  value[s2[i]]=i;  
}
Tree *search(int left,int right)  //查询子树的父节点并返回其指针
{
  Tree *p;
  p=NULL;
  for(int i=0;i<len;i++)
  if(value[s1[i]]>=left&&value[s1[i]]<=right)
  {
  p=(Tree *)malloc(sizeof(Tree));
  p->date=s1[i];
  break;  }
  return p;
}
void creat(int left,int right,Tree *root)  //恢复二叉树
{
  int mid;
  for(int i=0;i<len;i++)
  if(s2[i]==root->date)
  {
 
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭