[华为OD] B卷 树状结构查询 200

题目:

通常使用多行的节点、父节点表示一棵树,比如

西安 陕西

陕西 中国

江西 中国

中国 亚洲

泰国 亚洲

输入一个节点之后,请打印出来树中他的所有下层节点

输入描述

第一行输入行数,下面是多行数据,每行以空格区分节点和父节点

接着是查询节点

输出描述

输出查询节点的所有下层节点。以字典序排序Q

备注

树中的节点是唯一的,不会出现两个节点,是同一个名字

示例1:

输入

5

b a

c a

d c

e c

f d

c

输出

d

e

f

题解:

题目不难,就是构建一个树状的数据结构,只是遍历打印的时候需要注意下,如果子节点有多重树的话,先打印子节点,再打印子节点的子节点。

代码:

import java.util.*;public class TreeInfo {public static void main(String[] args) {Map<String, Tree> treeMap = new HashMap<>();Scanner sc = new Scanner(System.in);int lines = Integer.valueOf(sc.nextLine());for (int i = 0; i < lines; i++) {String[] treesInfo = sc.nextLine().split(" ");Tree tree = new Tree(treesInfo[1]);String child = treesInfo[0];if (treeMap.containsKey(tree.getParent())) {tree = treeMap.get(treesInfo[1]);tree.allChildRen(child);} else {tree.allChildRen(child);}treeMap.put(treesInfo[1], tree);}String treeNode = sc.nextLine();List<String> nextNodes = new ArrayList<>();printChild(treeNode, treeMap, nextNodes);}private static void printChild(String node, Map<String, Tree> treeMap, List<String> nextNodes) {List<String> children = treeMap.get(node).getChildren();for (String child : children) {System.out.println(child);if (treeMap.containsKey(child)) {nextNodes.add(child);}}if (nextNodes.size() > 0) {String newNode = nextNodes.get(0);nextNodes.remove(0);printChild(newNode, treeMap, nextNodes);}}private static class Tree {String parent;List<String> children;public Tree(String parent) {this.parent = parent;children = new ArrayList<>();}public String getParent() {return parent;}public void setParent(String parent) {this.parent = parent;}public List<String> getChildren() {return children;}public void setChildren(List<String> children) {this.children = children;}private void allChildRen(String child) {if (this.children != null && this.children.contains(child)) {return;} else {this.children.add(child);}}}
}

验证:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/326959.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外客户开发渠道有哪些

海外客户开发是一个多元化的过程&#xff0c;涉及线上与线下多个渠道。以下是一些有效的海外客户开发渠道&#xff1a; 平台电商&#xff1a; 利用国际B2B电商平台&#xff0c;如阿里巴巴国际站、 Globalsources、Made-in-China等&#xff0c;这些平台拥有庞大的国际买家流量&a…

vue-fontawesome-elementui-icon-picker选择icon框架

第一步&#xff1a;安装vue-fontawesome-elementui-icon-picker依赖 npm install vue-fontawesome-elementui-icon-picker --save-dev 第二步&#xff1a;main.js配置 (放在element ui引入之后) import iconPicker from vue-fontawesome-elementui-icon-picker; Vue.use(ico…

深入探索van Emde Boas树:原理、操作与C语言实现

van Emde Boas (vEB) 树是一种高效的数据结构&#xff0c;用于处理整数集合。它是由荷兰计算机科学家Jan van Emde Boas在1977年提出的。vEB树在处理整数集合的查找、插入、删除和迭代操作时&#xff0c;能够以接近最优的时间复杂度运行。vEB树特别适合于那些元素数量在某个较小…

跨ROS系统通信:使用TCP实现节点间的直连

当涉及到在机器人操作系统&#xff08;ROS&#xff09;环境中的通信时&#xff0c;标准做法通常是在同一个ROS网络内通过话题和服务进行。但在某些特定情况下&#xff0c;比如当你有两个分布在不同网络中的ROS系统时&#xff0c;标准的通信方法可能不太适用。此时&#xff0c;一…

基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架)全网首发【图像识别-天气分类】

一个能够从给定的环境图像中自动识别并分类天气&#xff08;如晴天、多云、雨天、雪天闪电等&#xff09;的系统。 技术栈&#xff1a; 深度学习框架&#xff1a;PyTorch基础模型&#xff1a;VGG16与EfficientNet任务类型&#xff1a;计算机视觉中的图像分类 模型选择 VGG16 …

【微信小程序开发】深入探索事件绑定、事件冒泡、页面跳转的逻辑实现

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

微信小程序(Taro)获取经纬度并转化为具体城市

1、获取经纬度 申请权限&#xff0c;想要使用微信小程序获取经纬度的方法是要申请该方面的权限。 获取经纬度的方法有很多选择其中一个使用就好。 我使用的是Taro.getFuzzyLocation(&#xff09; 在app.config.js中需要添加设置 requiredPrivateInfos: ["getFuzzyLocat…

第2章Spring Boot实践,开发社区登录模块【仿牛客网社区论坛项目】

第2章Spring Boot实践&#xff0c;开发社区登录模块【仿牛客网社区论坛项目】 前言推荐项目总结第2章Spring Boot实践&#xff0c;开发社区登录模块1.发送邮件配置MailClient测试 2.开发注册功能访问注册页面提交注册数据激活注册账号 3.会话管理体验cookie体验session 4.生成验…

10分钟获取IP SSL证书——建议收藏

IP SSL证书是一种专门为IP地址签发的安全套接字层&#xff08;SSL&#xff09;证书&#xff0c;与常规SSL证书主要绑定到域名&#xff08;如 example.com&#xff09;不同&#xff0c;IP SSL证书直接绑定到服务器的IP地址&#xff08;如 192.0.2.1&#xff09;。 一 . IP地址…

百度文心一言 java 支持流式输出,Springboot+ sse的demo

参考&#xff1a;GitHub - mmciel/wenxin-api-java: 百度文心一言Java库&#xff0c;支持问答和对话&#xff0c;支持流式输出和同步输出。提供SpringBoot调用样例。提供拓展能力。 1、依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId…

C语言例题41、八进制转换为十进制

#include<stdio.h>void main() {int x;printf("请输入一个8进制整数&#xff1a;");scanf("%o", &x);printf("转换成十进制后的整数为%d\n", x); }运行结果&#xff1a; 本章C语言经典例题合集&#xff1a;http://t.csdnimg.cn/FK0Qg…

学习软考----数据库系统工程师32

NoSQL非关系型数据库 CAP理论和BASE特性 关系型数据库主要使用ACID理论 各种NoSQL数据 库的分类与特点

前端XHR请求数据

axios封装了XHR(XMLHttpRequest) 效果 项目结构 Jakarta EE9&#xff0c;Web项目。 无额外的maven依赖 1、Web页面 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title&…

强化训练:day7(字符串中找出连续最长的数字串、岛屿数量、拼三角)

文章目录 前言1. 字符串中找出连续最长的数字串1.1 题目描述1.2 解题思路1.3 代码实现 2. 岛屿数量2.1 题目描述2.2 题目描述2.3 代码实现 3. 拼三角3.1 题目描述3.2 解题思路3.3 代码实现 总结 前言 1. 字符串中找出连续最长的数字串   2. 岛屿数量   3. 拼三角 1. 字符串…

11个免费的 android数据恢复应用程序功能分析

在手机上丢失数据是一个很大的错误。但是&#xff0c;在这种情况下&#xff0c;除了惊慌失措之外&#xff0c;最好开始使用android数据恢复应用程序搜索以查找将其取回的方法。您可以检查手机的备份存储以在Android上进行数据恢复&#xff0c;但是如果数据仍然无处可寻&#xf…

【数据库】数据库指令

一。数据库打开 1.命令行 2.进入mysql mysql -uroot -p密码 3.退出 exit&#xff1b; 二。针对数据库的操作 1.创建数据库&#xff08;有分号&#xff09; create database student; 2.使用数据库 use student 3.删除数据库&#xff08;有分号&#xff09; drop database…

计算机Java项目|Springboot学生读书笔记共享

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、Python项目、前端项目、人工智能与大数据、简…

SpringAMQP-消息转换器

这边发送消息接收消息默认是jdk的序列化方式&#xff0c;发送到服务器是以字节码的形式&#xff0c;我们看不懂也很占内存&#xff0c;所以我们要手动设置一下 我这边设置成json的序列化方式&#xff0c;注意发送方和接收方的序列化方式要保持一致 不然回报错。 引入依赖&#…

【HarmonyOS】笔记八-图片处理

概念 开发者经常需要在应用中显示一些图片&#xff0c;例如&#xff1a;按钮中的icon、网络图片、本地图片等。在应用中显示图片需要使用Image组件实现&#xff0c;Image支持多种图片格式&#xff0c;包括png、jpg、bmp、svg和gif&#xff0c;该接口通过图片数据源获取图片&am…

网站设计模板简单又好看

在互联网时代&#xff0c;每个企业都需要拥有一个好看又具有吸引力的网站。一个简单却又好看的网站设计模板可以为企业带来许多好处。本文将探讨一些如何设计一个简单又好看的网站模板的技巧。 首先&#xff0c;一个好的网站设计模板应该具备简洁明了的布局。简单的布局能够使用…