algorithm - 如何从给定的父子列表创建树,但子节点不能在其父节点之前创建?
问题描述
一个列表包含父母和孩子。这里根节点的父节点是-1。我必须从这里创建一棵树,但任何子节点都不能在它成为父节点之前创建。
父子列表
3 7
3 6
2 5
-1 1
2 4
1 2
1 3
解决方案
以下算法将起作用:
- 初始化一个
Map
从Integer
到List/Array[Integer]
。在这里,key
代表Parent
和List/Array[Integer]
代表Childrens
。 - 迭代
parent child list
问题中提到的。对于每个条目,填充Map
在步骤 1 中创建的。即对于问题中提到的示例,Map
将如下所示:-1 -> [1] 1 -> [2, 3] 2 -> [4, 5] 3 -> [6, 7]
- 准备
Map
好后,按键排序Map
。 - 对于每个
Key, Value
inMap
,为父节点创建节点,然后为它的子节点创建节点。遵循此对剩余的Key, Value
配对。
这将确保Parent
始终做好之前的准备Child
。
推荐阅读
- python - 将两个不同日期的 DataFrame 合并为一个,时间线升序
- javascript - 将变量从 ejs 文件传递到 javascript 文件
- python - 当我输入一个巨大的数字时,为什么 python 在我的素数测试中跳过我的 while 循环?
- java - 唯一过滤wifi网络名称
- google-sheets - 如何使用十六进制更改自定义数字格式颜色?
- java - 尝试在同一包中的另一个类中引用 SteppingStone5_Recipe 类时,编译器显示“找不到符号”错误消息
- java - Java 接口扩展和 Spring 的 Autowired
- c# - 如何检查一个字符串的数字高于另一个字符串?
- apache-kafka - 在控制台模式下运行时,Kafka 的并行概念是否适用?
- python - 打字时如何检查字符串长度?