由中序与先序字符串列获取二叉树

本文介绍了一种通过给定的先序和中序遍历字符串来构建二叉树的方法,并提供了完整的C++实现代码示例。该方法首先解析先序字符串的第一个元素作为根节点,然后在中序字符串中找到该元素的位置,以此来确定左右子树的范围。
摘要由CSDN通过智能技术生成

由中序与先序字符串列获取二叉树

/*
Name: 二叉树 
Copyright: 
Author: 
Date: 18/04/17 16:24
Description: 利用先序与中序二叉树字符串构造二叉树结构 
*/
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct tree
{
char data;
struct tree *lc;
struct tree *rc;
}create;
create *createTree(char *pre,char *in,int n) 
{
create *b;
char *p;
int k;
if(n<=0)
return NULL;
b=(create *)malloc(sizeof(create));
b->data=*pre;
for(p=in;p<in+n;p++)
if(*p==*pre)
break;
k=p-in;
b->lc=createTree(pre+1,in,k);
b->rc=createTree(pre+k+1,p+1,n-k-1);
return b;
} 
int main()
{
char a[7]={'A','B','D','G','C','E','F'};//先序字符串数组
char b[7]={'D','G','B','A','E','C','F'};//中序字符串数组
char *i=a,*j=b;
create *c=createTree(a,b,7);
cout<<"      ";
cout<<c->data;//此处用于输出所得到的二叉树 
cout<<endl;
cout<<"    ";
cout<<c->lc->data;
cout<<"    ";
cout<<c->rc->data;
cout<<endl;
cout<<"  ";
    cout<<c->lc->lc->data;
    cout<<"    ";
cout<<c->rc->lc->data;
cout<<"   ";
cout<<c->rc->rc->data;
cout<<endl;
cout<<"    ";
    cout<<c->lc->lc->rc->data;
return 0;
} 


所得截图如下所示:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值