【洛谷 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;
}
目录
相关文章
|
9月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
486 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
存储 运维 安全
构建高效自动化运维体系:Ansible与Docker的完美结合
【2月更文挑战第31天】 随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性和提升部署效率的关键手段。本文将详细探讨如何通过Ansible和Docker的结合来构建一个高效、可靠且易于管理的自动化运维体系。首先,介绍自动化运维的必要性及其在现代IT基础设施中的作用;然后,分别阐述Ansible和Docker的技术特点及优势;最后,提供一个基于Ansible和Docker结合使用的实践案例,以及实施过程中遇到的挑战和解决方案。
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
380 4
|
9月前
|
敏捷开发 数据可视化 调度
燕云十六声开发团队看过来,高效协作软件选哪个?
在2025年新春来临之际,燕云十六声团队面临巨大工作量和挑战,选择合适的可视化协作软件至关重要。本文推荐6款提升团队效率的办公软件:板栗看板、Trello、Asana、Monday.com、Jira和Wrike。这些工具各具优势,如板栗看板的操作简洁、Trello的灵活看板、Asana的多层次任务管理、Monday.com的高度定制化、Jira的专业项目管理和Wrike的强大报告功能,助力游戏团队高效协作与运营。
155 2
|
12月前
|
5G UED
频谱效率的奥秘与5G的提升之道
频谱效率的奥秘与5G的提升之道
593 63
|
10月前
|
数据采集
动态代理与静态代理在爬虫解析的优缺点
随着科技和互联网的发展,越来越多企业需要使用代理进行数据抓取。本文介绍了HTTP动态代理与静态代理的区别,帮助您根据具体需求选择最佳方案。动态代理适合大规模、高效率的爬取任务,但稳定性较差;静态代理则适用于小规模、高稳定性和速度要求的场景。选择时需考虑目标、数据量及网站策略。
167 4
|
边缘计算 NoSQL 数据管理
数据库技术的演进与未来展望
一、引言 数据库技术作为现代信息技术的核心之一,自诞生以来经历了数次重大变革
|
弹性计算 关系型数据库 MySQL
阿里云MySQL云数据库优惠价格、购买和使用教程分享!
阿里云数据库使用流程包括购买和管理。首先,选购支持MySQL、SQL Server、PostgreSQL等的RDS实例,如选择2核2GB的MySQL,设定地域和可用区。购买后,等待实例创建。接着,创建数据库和账号,设置DB名称、字符集及账号权限。最后,通过DMS登录数据库,填写账号和密码。若ECS在同一地域和VPC内,可内网连接,记得将ECS IP加入白名单。
1143 2
|
存储 Java 程序员
SpringBoot之分层解耦以及 IOC&DI的详细解析
SpringBoot之分层解耦以及 IOC&DI的详细解析
302 0