2017年408专业算法题

2023-05-16

文章目录

  • 0 结果
  • 1 题目
  • 2 思路
  • 附录

0 结果

请添加图片描述

请添加图片描述

1 题目

请添加图片描述

2 思路

因为要转换为中序表达式,因此使用中序遍历。在中序遍历的过程中,对于当前访问的非空结点p,则先输出"(“,然后递归调用左子树,输出p的权值,递归调用右子树,输出“)”,如果p是根或者叶结点,则不需要输出“(”或”)"。

#include <vector>
using std::vector;
typedef char ElemType;

typedef struct BiTNode
{
    ElemType data;
    struct BiTNode *lchild, *rchild;
}BiTNode;


void inOrder(BiTNode* p){
    if(p == nullptr) return;
    if(p->lchild != nullptr || p->rchild != nullptr)
        printf("(");
    inOrder(p->lchild);
    printf("%c", p->data);
    inOrder(p->rchild);
    if(p->lchild != nullptr || p->rchild != nullptr)
        printf(")");
}

void ans(BiTNode* T){
    inOrder(T->lchild);
    printf("%c ", T->data);//单独处理根结点
    inOrder(T->rchild);
}

//char in[] = {'a', '+', 'b', '*', 'c', '*', '-', 'd'};//中序遍历
//测试序列2
char in[] = {'a', '*', 'b', '+', '-', 'c', '-', 'd'};//中序遍历
//层序、中序创建二叉树
BiTNode* Create4(vector<char> layer, int inL, int inR){
    if(layer.size() == 0){//当前层序遍历完
        return NULL;
    }

    BiTNode* root = new BiTNode ;
    root->data = layer[0];

    int k;
    for (k = inL; k <= inR; ++k) {//中序序列中寻找根结点
        if(in[k] == root->data){
            break;
        }
    }

    vector<char> leftLayer;//左子树层次遍历
    vector<char> rightLayer;//右子树层次遍历

    for (int i = 1; i < layer.size(); ++i) {//遍历层序序列,分左右子树存储
        bool isLeft = false;
        for (int j = inL; j < k; ++j) {
            if(layer[i] == in[j]){
                isLeft = true;
                break;
            }
        }
        if(isLeft == true){
            leftLayer.push_back(layer[i]);
        }else{
            rightLayer.push_back(layer[i]);
        }
    }

    root->lchild = Create4(leftLayer,inL, k - 1);
    root->rchild = Create4(rightLayer,k + 1, inR);

    return root;
}

int main(){
    BiTNode* root;

    vector<char> layer;//层序遍历
//    layer.push_back('*');
//    layer.push_back('+');
//    layer.push_back('*');
//    layer.push_back('a');
//    layer.push_back('b');
//    layer.push_back('c');
//    layer.push_back('-');
//    layer.push_back('d');
//测试序列2
    layer.push_back('+');
    layer.push_back('*');
    layer.push_back('-');
    layer.push_back('a');
    layer.push_back('b');
    layer.push_back('-');
    layer.push_back('c');
    layer.push_back('d');

    root = Create4(layer,  0, layer.size() - 1);
    ans(root);

    return 0;
}

附录

408历年真题算法题解析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2017年408专业算法题 的相关文章

  • Visual Studio 2015/2017/2019 之通道清单未通过测试签名验证,以及正确安装证书详细过程

    Visual Studio 2015 2017 2019 之通道清单未通过测试签名验证 xff0c 以及正确安装证书详细过程 在安装之前都要进行证书安装 xff0c 否则会出现各种各样的错误 并且每个版本的证书都不一致 年份 企业版 社区版
  • jdk32位安装包下载_premiere pro 2017 软件下载及安装教程

    安装包下载 名称 xff1a premiere pro 2017大小 xff1a 1 29GB语言 xff1a 简体中文安装环境 xff1a win10 win8 win764位下载链接 xff1a https pan baidu com
  • 【The 2017 BAPC】C题-Collatz Conjecture ---- GCD+优化去重

    题意 给你一个大小为n的序列 xff0c 让你求里面所有子串的GCD xff0c 求里面最多有多少不同的GCD 思路 xff1a 利用集合set tmp维护 到当前子串的最后一个元素的所有GCD xff0c set ans保存所有不同种类的
  • 我的2017-搭建个人网站,自拟定代码根目录

    wampserver集成安装环境安装的php的运行根目录在wamp文件夹中的www文件夹下 xff0c 而为了有效的将代码和服务器进行分离 xff0c 可以采用自拟定代码根目录进行修改 1 确定代码编辑位置 xff0c 修改服务器默认指向
  • virtual stdio 2017 问题

    严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB8020 无法找到 Visual Studio 2010 的生成工具 平台工具集 61 v100 若要使用 v100 生成工具进行生成 xff0c 请安装 Visual Stud
  • 华师2017高等工程数学期末试题 

    华师2017高等工程数学期末试题
  • 2017-06-08 每日一记 sqlite3_bind_blob函数

    sqlite3函数 xff1a sqlite3 bind blob stat 1 pdata int length of data in bytes NULL 参数1 xff1a sqlte stmt 参数2 xff1a 的索引 xff0c
  • [算法]px4位置估计-inav (2017/10/26更新)

    技术交流 xff1a zinghd 64 163 com 757012902 64 qq com 转载标明出处 xff0c 欢迎转载 xff0c 因为都是自己的想法 xff0c 不一定都是对的 xff0c 欢迎讨论 xff0c 哪有问题欢迎
  • 2016,再见 2017,还请多多指教

    先来一个象征意义上的序 今天是2017 01 01 新年的第一天 昨天适合总结 今天适合制作新年计划 昨天没做总结 于是今天总结和新年计划一起来吧 充满回忆的2016 昨天在驾校练车练了一天 倒库终于能倒进去了 回到住处已经下午5点 买了路
  • 2017论文阅读:Learning a Rotation Invariant Detector with Rotatable Bounding Box

    文章代码已开源 文章目录 文章贡献1 Rotatable bounding box2 Rotation invariant detection2 1 模型结构总览2 2 模型训练2 3 实现的细节 3 实验 amp 结果 文章贡献 提出了一
  • 我的2017-搭建个人网站,搭建PHP环境(2)

    上周确定了 xff0c 想要应用的后台语言 xff0c 面临的最大问题就是 xff1a php我不会啊 xff0c 哈哈哈哈 xff0c 所以接下来首先要做的就是了解 学习php的相关知识 接下来的第一步 xff1a 环境搭建 1 下载安装
  • 我的2017-搭建个人网站,hello PHP(2)

    学习一门语言 xff0c 例行惯例 xff0c 先来个 hello world 搭建好了php环境 xff0c 然后就可以运行php了 xff0c 首先用一种最简单的方法 xff0c 在wamp安装位置 xff08 相应的文件夹 xff09
  • 记录2017/9/7趋势科技笔试题

    1 下面程序一共会在屏幕上输出多少个 xff1f include lt iostream gt include lt stdio h gt include lt sys types h gt include lt unistd h gt u
  • 过去的 2017 年

    过去的 2017 年分为两个部分 xff0c 前半部分偏忙碌 xff0c 个人时间较少 xff0c 但是收获甚微 xff1b 后半部分进入了一个学习的环境 xff0c 最主要的就是个人可自由支配的时间多了 xff0c 留给了我很多思考的时间
  • Visual Studio 2017 代码自动对齐

    点 编辑 高级 设置选定内容的格式 或者按Ctrl 43 K 然后再按Ctrl 43 F 就好了 你可以在常用快捷键自定义 窗口中进行查看 1 进入工具 选项 对话框 2 选择 环境 键盘 3 在 显示命令包含 下面的对话框中输入 对齐 关
  • OPENMV结合PIX飞控实现四轴定点 循迹 2017电赛

    本文章代码已上传Github xff1a https github com Kevincoooool 2017 Follow 有兴趣的可以加个STAR 自从17年国赛之后 xff0c 自己做了openmv xff0c 加了很多群 xff0c
  • 计组——彻底搞懂cache主存映射以及cache容量的计算

    cache主存映射以及cache容量 一 三种映射方式 1 全相联映射 2 直接映射 3 组相联映射 二 cache容量计算 1 先计算cache行标记项位数 2 再计算cache块位数 3 计算cache行的位数 4 最后计算cache总
  • 计算机网络知识汇总(超详细)

    目录 第一章 概念 组成 功能 和 分类 计算机网络概念 计算机网络功能 计算机网络的组成 计算机网络的分类 总结 标准化工作及相关组织 标准化工作 标准化工作相关组织 总结 计算机网路的速率 带宽 吞吐量 1 速率 2 带宽 3 吞吐量
  • 2017总结

    这一年还是大部分时间做着开发的工作 在创业的一年多时间里 好像自己所做的事情不太像一个创业者做的事 用了太多的时间在具体的工作当中了 对于市场 对于营销推广都是在被动的接收 没有全面的 主动的去做事情 这也可能是我们做技术的出来创业的弊端
  • 2017 ICM/MCM D题 Optimizing the Passenger Throughput at an Airport Security Check

    问题描述 参考链接 问题描述 在机场安全检查站优化乘客吞吐量 继2001年9月11日美国发生恐怖袭击事件后 全世界的机场安全状况得到显着改善 机场有安全检查站 在那里 乘客及其行李被检查爆炸物和其他危险物品 这些安全措施的目的是防止乘客劫持

随机推荐