【洛谷 P1305】新二叉树 题解(结构体数组+先序遍历+二叉树)

简介: 该题目要求实现一个程序,输入一棵二叉树的节点信息并输出其前序遍历结果。输入包含树的节点数`n`和每个节点的左右子节点信息,空节点用`*`表示。样例输入是一个包含6个节点的二叉树,输出前序遍历序列`abdicj`。解决方案是使用一个结构体数组存储二叉树节点,通过`add`函数建立关联,然后用`preOrder`函数进行前序遍历。AC代码提供了一个C++实现,首先读取根节点,然后构建二叉树结构,并进行前序遍历输出。

新二叉树

题目描述

输入一串二叉树,输出其前序遍历。

输入格式

第一行为二叉树的节点数 $n$。($1 \leq n \leq 26$)

后面 $n$ 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。

空节点用 * 表示

输出格式

二叉树的前序遍历。

样例 #1

样例输入 #1

6
abc
bdi
cj*
d**
i**
j**

样例输出 #1

abdicj

思路

用一个结构体数组储存二叉树,第一个节点为根节点root,然后输出先序遍历。

AC代码

#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;

struct Snode {
   
    char l;
    char r;
}node[30];
char root;

int i(char ch){
   
    return ch - 'a';
}

void add(char d, char l, char r){
   
    node[i(d)].l = l;
    node[i(d)].r = r;
}

void preOrder(char d) {
   
    if('*' != d){
   
        cout << d;
        preOrder(node[i(d)].l);
        preOrder(node[i(d)].r);
    }
}

int main() {
   
    int n;
    int flg = 0;
    cin >> n;
    while(n--) {
   
        char d, l, r;
        cin >> d >> l >> r;
        if(!flg) {
   
            root = d;
            flg = 1;
        }
        add(d, l, r);
    }
    preOrder(root);
    return 0;
}
目录
相关文章
|
存储 编译器 数据库
【C/C++ 数据结构 】线索二叉树全解析:从数学原理到C++实现
【C/C++ 数据结构 】线索二叉树全解析:从数学原理到C++实现
407 0
|
10月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
545 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
存储 机器学习/深度学习 算法
【数据结构与算法篇】深入浅出——二叉树(详解)
【数据结构与算法篇】深入浅出——二叉树(详解)
859 0
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
|
9月前
|
图形学
Unity UGUI拖拽移动
本文介绍了两种UI拖拽实现方式:精准拖拽和克隆拖拽。精准拖拽通过计算鼠标点击点与UI中心的偏移量,使UI跟随鼠标移动,适用于需要精确控制的场景。代码中通过`IBeginDragHandler`、`IDragHandler`和`IEndDragHandler`接口实现拖拽逻辑。克隆拖拽则在拖拽时克隆一个UI对象,使其跟随鼠标移动,适合视觉效果需求较高的场景。代码中同样使用上述接口,并在拖拽结束时销毁克隆对象。具体实现可参考提供的代码示例。
381 10
|
前端开发 Java 关系型数据库
基于Springboot+Vue实现校园招聘系统
基于Springboot+Vue实现校园招聘系统
215 2
|
监控 安全 物联网
智能家居安全:物联网时代的挑战与应对策略
在万物互联的今天,智能家居带给我们便利的同时,也带来了前所未有的安全挑战。本文将深入探讨智能家居系统面临的主要安全风险,包括数据泄露、设备劫持等,并分析其背后的技术原因。同时,文章将提出一系列针对性的安全措施,旨在帮助用户和厂商共同构建一个更加安全的智能家居环境。通过具体案例分析,我们将看到安全措施实施的重要性及其对智能家居生态的积极影响。最后,本文将对智能家居安全的未来趋势进行展望,鼓励读者思考如何在享受科技便利的同时,保护个人隐私和数据安全。
422 29
|
存储 C++
c++的指针完整教程
本文提供了一个全面的C++指针教程,包括指针的声明与初始化、访问指针指向的值、指针运算、指针与函数的关系、动态内存分配,以及不同类型指针(如一级指针、二级指针、整型指针、字符指针、数组指针、函数指针、成员指针、void指针)的介绍,还提到了不同位数机器上指针大小的差异。
449 1
|
存储 移动开发 固态存储
计算机组成原理(3)-----外存储器
计算机组成原理(3)-----外存储器
1515 1
|
Windows
LabVIEW安装第三方VISA软件后NI VISA失效
LabVIEW安装第三方VISA软件后NI VISA失效
283 0