吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 906|回复: 1
收起左侧

[已解决] 为什么根据中后跟序列构造二叉树失败

[复制链接]
d173220523 发表于 2020-8-13 13:47
本帖最后由 d173220523 于 2020-8-13 14:13 编辑

[C] 纯文本查看 复制代码
#include <iostream>
#define MaxSize 50 //定义栈中元素的最大个数
typedef struct BiTNode{
        char data; //数据域
        struct BiTNode *lchild, *rchild; //左、右孩子指针
}BiTNode,*BiTree;
BiTree PrelnCreat(char* in, char* pre, int n){
        if(n == 0)
                return NULL;
        BiTree p = new BiTNode;
        p->data = *pre;
        for(int i = 0;i < n; i++)
                if(in[i] == *pre)
                        break;
                p->lchild = PrelnCreat(in, pre +1, i);
                p->rchild = PrelnCreat(in + i + 1, pre + i + 1, n - (i + 1));
                return p;
}
BiTree lnPostCreat(char* in, char* post, int n){
        if(n == 0)
                return NULL;
        BiTree p = new BiTNode;
        p->data = post[n-1];
        for(int i = 0;i < n; i++)
                if(in[i] == post[n-1])
                        break;
                p->lchild = PrelnCreat(in, post, i);
                p->rchild = PrelnCreat(in + i + 1, post + i, n - (i + 1));
                return p;
}
void PostOrder(BiTree T){
        if(T){
                PostOrder(T->lchild);
                PostOrder(T->rchild);
                printf("%c",T->data);
        }
}
int main(){
        char* pre="GDAFEMHZ";
        char* in="ADEFGHMZ";
        char* post="AEFDHZMG";
        BiTree t=lnPostCreat(in,post,8);
        PostOrder(t);
        //printf("%d",treeDepth(t));
        printf("\n"); 
        return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

秩序的风达 发表于 2020-8-13 14:00
好像你计算根节点时的i变量是局部的?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 13:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表