【LeetCode题解】1600. 王位继承顺序(前序遍历多分支树)

文章目录

    • [1600. 王位继承顺序](https://leetcode.cn/problems/throne-inheritance/)
          • 思路:前序遍历多分支树
          • 代码:


1600. 王位继承顺序

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

思路:前序遍历多分支树

1.用set集合来存放死亡的人数

2.用hashMap来存放每个父结点的子节点列表

3.每出生一个,把孩子存放到父结点的子节点列表中

4.在getInheritanceOrder()中,进行深度优先遍历,把没有去世的添加到答案中,然后遍历其所有子节点

代码:
    private  String king;private Set<String> dead = new HashSet<>();//存死亡的人private Map<String,List<String>>g = new HashMap<>();//用哈希表来存储每个人的孩子private List<String>ans = new ArrayList<>();//要返回的答案//1600. 王位继承顺序---前序遍历多分支树public void ThroneInheritance(String kingName) {king = kingName;//继承王位}public void birth(String parentName, String childName) {g.computeIfAbsent(parentName,k->new ArrayList<>()).add(childName);
//computeIfAbsent: 这是 Map 接口的一个方法,用于根据指定的键查找值。
// 如果键存在,则返回与键关联的值;
// 如果键不存在,则使用提供的函数计算值并将其与键关联,然后返回该值
//将 childName 添加到 parentName 的孩子列表中}public void death(String name) {dead.add(name);}public List<String> getInheritanceOrder() {ans.clear();dfs(king);//进行深度优先遍历return ans;}private void dfs(String x){if (!dead.contains(x)){ans.add(x);//没有死,添加到答案列表}for (String y:g.getOrDefault(x,Collections.emptyList())) {//Collections 类的一个静态方法,返回一个不可变的空列表(List)对象。dfs(y);}}

点击移步博客主页,欢迎光临~

偷cyk的图

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

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

相关文章

Sora是什么?Sora怎么使用?Sora最新案例视频以及常见问题答疑

Sora 是什么&#xff1f; 2024年2月16日&#xff0c;OpenAI 在其官网上面正式宣布推出文本生成视频的大模型Sora 这样说吧给你一段话&#xff0c; 让你写一篇800字的论文&#xff0c;你的理解很可能都有偏差&#xff0c;那么作为OpenAi要做文生视频到底有多难&#xff0c;下面…

【Hadoop技术框架-MapReduce和Yarn的详细描述和部署】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;今天的内容主要是Hadoop的后两个组件&#xff1a;MapReduce和yarn的相关内容。同时还有Hadoop的完整流程。希望对大家有所帮助。感谢大家关注点赞。 &#x1f49e;&#x1f49e;前路漫漫&…

交换机与队列的简介

1.流程 首先先介绍一个简单的一个消息推送到接收的流程&#xff0c;提供一个简单的图 黄色的圈圈就是我们的消息推送服务&#xff0c;将消息推送到 中间方框里面也就是 rabbitMq的服务器&#xff0c;然后经过服务器里面的交换机、队列等各种关系&#xff08;后面会详细讲&…

SVG图标显示

SVG图标显示 1.安装SharpVectors.Wpf包 2.添加引用 xmlns:svgc"http://sharpvectors.codeplex.com/svgc/"3.加载svg文件&#xff0c;生成操作选择资源(Resource) 4.UI界面显示SVG图像 <Button Click"OnSaveFileClick" ToolTip"Save Svg File…

二维相位解包理论算法和软件【全文翻译- 残差、梯度和相分解:示例 (2.72.8)】

2.7 残差、梯度和相分解&#xff1a;示例 观察第 2.3 节中提出的局部相位特性如何应用于现实世界是很有启发性的。我们将借助第 2.4 节中的亥姆霍兹分解定理来实现这一点。图 2.7(a)描述了一个 512512 像素的包裹相位函数&#xff0c;它是实际应用中可能遇到的典型相位函数。请…

【LeetCode】894. 所有可能的真二叉树

文章目录 [894. 所有可能的真二叉树](https://leetcode.cn/problems/all-possible-full-binary-trees/)思路一&#xff1a;分治代码&#xff1a;思路二&#xff1a;记忆化搜索代码&#xff1a; 894. 所有可能的真二叉树 思路一&#xff1a;分治 1.递归&#xff0c;n1 时&#…

动态规划——线性dp

图片来源&#xff1a;_snowstorm_ 路线问题的状态表示一般都可以用点的坐标来表示 状态表示数组维数的确定原则&#xff1a;在可以用该维数表示出答案的基础上维数尽可能最小 数字三角形 acwing 898 #include<iostream> #include<cstring> #include<algorith…

基于SpringBoot Vue大学生家教管理系统

一、&#x1f4dd;功能介绍 基于SpringBoot Vue大学生家教管理系统 角色&#xff1a;管理员、教师、学生 管理员&#xff1a;管理员进入主页面&#xff0c;主要功能包括对首页、个人中心、学生管理、教师管理、科目管理、家教需求管理、家教预约管理、取消预约管理、通知公告…

项目:自主实现Boost搜索引擎

文章目录 写在前面开源仓库和项目上线其他文档说明 项目背景项目的宏观原理技术栈与环境搜索引擎原理正排索引倒排索引 去标签和数据清洗模块html文件名路径保存函数html数据解析函数文件写入函数 建立索引模块检索和读取信息建立索引建立正排索引建立倒排索引jieba工具的使用倒…

全网短剧搜索前端源码开源分享可改自己的接口

全网短剧搜索前端源码 内含7000短剧资源(不支持在线播放&#xff09; 源码全开源&#xff0c;可以修改成自己的接口 178、226、347行修改 源码免费下载地址抄笔记 (chaobiji.cn)https://chaobiji.cn/

学习 MongoDB:打开强大的数据库技术大门

一、基本概念 MongoDB 是一个基于分布式文件存储的文档数据库&#xff0c;由 C 语言编写。它旨在为 Web 应用提供可扩展的高性能数据存储解决方案。 相信MySQL我们非常的熟悉&#xff0c;那么MySQL的表结构与MongoDB的文档结构进行类比的话可能更好理解MongoDB。 MySQL的数据…

鸿蒙内核源码分析 (并发并行篇) | 内核如何管理多个 CPU?

理解并发概念 并发&#xff08;Concurrent&#xff09;: 多个线程在单个核心运行&#xff0c;同一时间只能一个线程运行&#xff0c;内核不停切换线程&#xff0c;看起来像同时运行&#xff0c;实际上是线程被高速的切换. 通俗好理解的比喻就是高速单行道&#xff0c;单行道指…