根据后序序列和中序序列创建二叉树

本文介绍如何根据给定的后序和中序序列来构建二叉树。通过解析这两个序列,可以重建二叉树的结构。
摘要由CSDN通过智能技术生成

根据后序序列和中序序列创建二叉树

如果代码有错欢迎评论留言

#include<bits/stdc++.h>
using namespace std;
typedef struct node{
    int val;
    struct node* left;
    struct node* right;
}*Bitree;

/*
如果数组p1=1 2 3 4 5
int* p2=p1+2;
p2为3 4 5
*/
Bitree createBitree(int* h,int* z,int size){
    //参数1:后续序列,参数2:中序序列,参数3:中序长度//
    if(size<1)return NULL;//如果中序长度小于1就表示该结点为空//
    Bitree p=(Bitree)malloc(sizeof(struct node));
    p->val=h[size-1];//当前后续序列的最后一位就是根结点//
    int f=0;//f用来计算当前结点的左子树结点数//
    while(z[f]!=h[size-1])f++;//中序序列中当前根结点的左边就是左子树序列//
    int r=size-f-1;//中序序列长度减去当前结点左子树长度再减去当前结点就是右子树长度//
    p->left=createBitree(h,z,f);//创建左子树//
    p->right=createBitree(h+f,z+f+1,r);//创建右子树//
    return p;
}

void qdisplay(Bitree t){
    if(t==NULL)return ;
    else{
        cout<<t->val<<' ';
        qdisplay(t->left)
  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值