forlorn pedestrian 2021-11-24 20:18 采纳率: 100%
浏览 10
已结题

根据后序序列和中序序列创建二叉树失败,出来的是不正确的二叉树,不知道哪错了,求解

样例输入:CEFDBHGA
                           CBEDFAGH
         我的输出:AGHBDFEC
         样例输出:ABCDEFGH
typedef struct btree {
    char data;
    struct btree* left;
    struct btree* right;
}bt,*btnode;

btnode creat(int po1, int po2, int io1, int io2, string& str1, string& str2) {//分别表示后根序列和中根序列首尾元素的坐标值
    if (po1 >po2)
        return NULL;
    btnode root = new bt;
    root->left = NULL;
    root->right = NULL;
    root->data = str1[po2];
    int i;
    for ( i = io1; i <= io2; i++) {
        if (str1[i] == root->data) {
            break;
        }
    }
    root->left = creat(po1, po1 + i - 1, io1, io1 + i - 1, str1, str2);
    root->right = creat(po1 + i, po2 - 1, io1 + i + 1, io2, str1, str2);
    return root;
}
void pretree(btnode t) {
    if (!t)
        return ;
    cout << t->data;
    pretree(t->left);
    pretree(t->right);
}

int main() {
    int io1=0, io2=0, po1=0, po2=0;
    string sIn, sPost;
    getline(cin, sPost);
    getline(cin, sIn);
    io2 = sIn.length() - 1;
    po2 = sPost.length() - 1;
    btnode root = creat(po1, po2, io1, io2, sPost, sIn);
    pretree(root);
    return 0;
}

CEFDBHGA
         CBEDFAGH
         AGHBDFEC
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月2日
    • 创建了问题 11月24日

    悬赏问题

    • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
    • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
    • ¥50 rk3588板端推理
    • ¥250 opencv怎么去掉 数字0中间的斜杠。
    • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
    • ¥250 paddleocr带斜线的0很容易识别成9
    • ¥15 电子档案元素采集(tiff及PDF扫描图片)
    • ¥15 flink-sql-connector-rabbitmq使用
    • ¥15 zynq7015,PCIE读写延时偏大
    • ¥15 使用spss做psm(倾向性评分匹配)遇到问题