我爱OJ 2023-05-19 22:06 采纳率: 84.6%
浏览 61
已采纳

关于#C++#的问题,如何解决?

题目描述

给定一棵二叉树的扩展后序序列,试构造这个二叉树,并输出这个二叉树的前序遍历结果。
输入

一行字符,即扩展后序序列,字符只包含小写字母和“.”,长度不超过255

输出

输出对应的前序遍历结果。
样例输入
..a..bc.d
样例输出
dcab
提示
https://neooj.com:8082/oldoj/upload/images/202304/%E4%BA%8C%E5%8F%89%E6%A0%91.jpg
做OJ呢,没啥思路,二叉树学的不好,GPT给了我一个,可以参考参考(我只能说,错一堆)

#include <iostream>
#include <string>
using namespace std;

struct Node {
    char val;
    Node *left;
    Node *right;
    Node(char x) : val(x), left(nullptr), right(nullptr) {}
};

string pre_order(Node *root) { //输出前序遍历结果
    if (root == nullptr) {
        return "";
    }
    string res = "";
    res += root->val;
    res += pre_order(root->left);
    res += pre_order(root->right);
    return res;
}

Node* build_tree(string& s, int& k) {
    if (k < 0 || s[k] == '.') { //空节点
        return nullptr;
    }
    Node *root = new Node(s[k]);
    --k;
    root->right = build_tree(s, k); //右子树先递归
    --k;
    root->left = build_tree(s, k);
    return root;
}

int main() {
    string s;
    cin >> s;
    int k = s.length() - 1; //后序遍历需要从后往前构建
    Node *root = build_tree(s, k);
    cout << pre_order(root) << endl;
    return 0;
}
  • 写回答

2条回答 默认 最新

      报告相同问题?

      问题事件

      • 已采纳回答 6月3日
      • 创建了问题 5月19日

      悬赏问题

      • ¥15 关于#python##pyqt#的问题,如何解决?
      • ¥15 html+css网页设计 html+css网页设计
      • ¥15 用html加css制作一个网页
      • ¥200 MFC中如何对ListCtrl的某一列的文本能换行显示
      • ¥15 clion添加库文件
      • ¥15 ERROR C2143怎么出现的?为什么ERROR C2144会这么转移,它是怎么出现的?该怎么解决?
      • ¥15 华大的hc32l136外部中断引脚怎么设置
      • ¥15 这个问题如何解答,需要答案
      • ¥15 ubuntu18.04 tty报错&tty界面su/sudo命令无法执行,如何解决?
      • ¥20 下面的压缩方法是否可行