java根据前序和中序构建二叉树_根据前序序列和中序序列构建二叉树

该博客介绍了如何根据给定的前序和中序序列使用C++来构建二叉树。首先定义了节点结构,然后通过递归方式实现创建二叉树的函数`createBitree`,接着展示了一个`hdisplay`函数用于层次遍历打印二叉树。在`main`函数中读取输入序列并调用这两个函数来构建并显示二叉树。
摘要由CSDN通过智能技术生成

根据前序序列和中序序列构建二叉树

#include

using namespace std;

int n;

typedef struct node{

int val;

struct node* left;

struct node* right;

}*Bitree;

/*

如果q1数组为1 2 3 4 5

int* q2=q1+2;

则q2数组为3 4 5

*/

Bitree createBitree(int* q,int* z,int size){//size为中序长度,当size<1时说明该结点为空//

if(size<1)return NULL;

Bitree p=(Bitree)malloc(sizeof(struct node));

p->val=q[0];//每次前序的第一个为结点//

int f=0;//f来计算左子树的结点数//

while(z[f]!=p->val)f++;//计算左子树结点数//

int r=size-f-1;//当前中序长度减去左子树长度再减去根节点为右结点数//

p->left=createBitree(q+1,z,f);//创建左子树,

p->right=createBitree(q+f+1,z+f+1,r);//创建右子树

return p;

}

void hdisplay(Bitree t){

if(t==NULL)return ;

else{

hdisplay(t->left);

hdisplay(t->right);

cout<val<

}

}

int main()

{

ios::sync_with_stdio(false);

cin>>n;

int q[100];

int z[100];

for(int i=0;i

cin>>q[i];

}

for(int i=0;i

cin>>z[i];

}

int size=n;

Bitree t=createBitree(q,z,size);

hdisplay(t);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值