首页 > 编程语言 >KY212 二叉树遍历C++

KY212 二叉树遍历C++

时间:2024-01-24 20:01:26浏览次数:52  
标签:pre int KY212 h1 Tree C++ h2 二叉树 root

思路是先构造出树,然后在后序遍历整个树。

#include<iostream>
#include<string>
using namespace std;
struct Tnode{
    char data;
    struct Tnode* left;
    struct Tnode* right;
};
typedef struct Tnode Tree;

Tree* build(string pre,int h1,int t1,string in,int h2,int t2){
    if(h1>t1) return NULL;
    Tree* root =new Tree;
    root->data=pre[h1];
    root->left=NULL;
    root->right=NULL;
    if(h1==t1) return root;
    int i=h2;
    for(;i<=t2;i++){
        if(in[i]==pre[h1]) break;
    }
    root->left=build(pre,h1+1,h1+i-h2,in,h2,i-1);
    root->right=build(pre,h1+i-h2+1,t1,in,i+1,t2);
    return root;
}

void postorder(Tree* root){
    if(!root) return;
    postorder(root->left);
    postorder(root->right);
    cout << root->data ;
}

int main(){
    string preorder,inorder;
    while(cin >> preorder >>inorder){
        Tree* root=build(preorder,0,preorder.size()-1,inorder,0,inorder.size()-1);
        postorder(root);
        cout << '\n';
    }

    return 0;
}

结果:

标签:pre,int,KY212,h1,Tree,C++,h2,二叉树,root
From: https://www.cnblogs.com/llllmz/p/17985746

相关文章

  • C++ STL Template Traits 技术
    C++的traits技术,是一种约定俗称的技术方案,用来为同一类数据(包括自定义数据类型和内置数据类型)提供统一的类型名(traits),这样可以统一的操作函数,例如advance(),swap(),encode()/decode()等。问题描述首先来看traits技术可以解决什么问题,我们拥有自定义类型Foo,Bar,以及编译......
  • 【C++入门到精通】C++入门 —— 深浅拷贝函数
     目录拷贝函数浅拷贝拷贝构造函数深拷贝拷贝构造函数总结 前言Linux专栏链接)大家可以关注一下,后面我会一点一点的更新的。大家坐稳扶好,要开车了!!!拷贝函数拷贝构造详细介绍)        是C++中的一个特殊成员函数,用于创建对象的副本。它的作用是通过使用已有对象的属性值来初始......
  • 【C++入门到精通】C++入门 —— 深浅拷贝函数
     目录拷贝函数浅拷贝拷贝构造函数深拷贝拷贝构造函数总结 前言Linux专栏链接)大家可以关注一下,后面我会一点一点的更新的。大家坐稳扶好,要开车了!!!拷贝函数拷贝构造详细介绍)        是C++中的一个特殊成员函数,用于创建对象的副本。它的作用是通过使用已有对象的属性值来初始......
  • Java和C++的区别:传闻这个问题能分辨你是不是科班出生?
    大家好,欢迎来到程序视点!我是小二哥。今天听到一个面试的小伙伴分享了他的面试经历,说面试官第一个问题是:Java语言和C++语言的区别有哪些?坊间流传,早些年间这个问题能区分一个Java程序员是不是科班出身!小伙伴怎么认为呢?缘由由于Java本来就是从C++衍生出来的,而且Java语言......
  • C++缺省参数
    缺省参数什么是缺省参数呢?简单来说,就是函数的参数可以给一个默认值,如果不给这个函数传递参数的时候那么改参数就是默认值,否则参数就是你指定的参数缺省参数分为全缺省和半缺省全缺省参数:所有的参数都有默认值voidfunc(inta=10,intb=20,intc=30){cou......
  • 图论---可视区域获取(C++)
    1.开源库获取   地址:http://en.wikipedia.org/wiki/Visibility_graph2.使用使用处包含头文件 #include"visilibity.hpp"即可,以下面在Qt中使用为例:1/*2=========AVisiLibityExampleProgram=========3Thisprogramprovidesatextinterfacewhic......
  • c++学习由浅入深刷题指南
    新手村任何一个伟大的目标,都有一个微不足道的开始。洛谷的第一个任务勇敢的迈出第一步,了解下语言和洛谷。跟着书本和老师走,不会难的。P1000P1001P1421P1425顺序与分支计算机的智能性开始得以体现,因为计算机能够根据不同的条件选择了。P1422P1085P1089P1909循环!......
  • C++ 项目结构
    1.C++项目结构C++项目包含几千个文件,当构建项目时,需要选择编译哪些文件,选择哪种工具编译这些文件组织称可执行文件1.1编译计算机处理器只能执行底层二进制指令,编译器需要将C++源码转换成处理器能执行的指令集。编译器配置的内存称为栈帧(Stackframe),配置内存传递数......
  • 【干货】VS Code中配置C/C++运行环境
    1、安装MinGW-w64有个很重要的工具:MinGW-w64,里面包含了在windows上编译调试C++代码所需要的所有环境(以及一些其他的小工具包,例如linux风格的命令ls,将这个包解压缩后的路径添加到系统环境变量PATH中就可以用了)。他的具体的发布和下载位置:Releases·skeeto/w64devkit(github.co......
  • C++U5-第04课-广度优先搜索1
    学习目标广度优先搜索简称广搜搜,英文缩写(BFS)顾名思义就是按照广度顺序优先进行枚举,其本质也是一种暴力枚举的思想。 广度优先搜索(Breadth-FirstSearch,简称BFS)是一种图搜索算法,用于遍历或搜索图数据结构的所有节点。该算法从起始节点开始,逐层地向外扩展,先访问当前节点的所有......