建立网站批复,当当网站开发系统说明,网站建设技术分类,做一个网站分析应该怎么做2024.4.7 题目来源我的题解方法一 哈希表多叉树的前序遍历 题目来源
力扣每日一题#xff1b;题序#xff1a;1600
我的题解
方法一 哈希表多叉树的前序遍历 发现继承顺序的生成与多叉树的前序遍历一致#xff0c;只需要在遍历过程中将已经去世的给排除就可以了。 如何存… 2024.4.7 题目来源我的题解方法一 哈希表多叉树的前序遍历 题目来源
力扣每日一题题序1600
我的题解
方法一 哈希表多叉树的前序遍历 发现继承顺序的生成与多叉树的前序遍历一致只需要在遍历过程中将已经去世的给排除就可以了。 如何存储继承关系使用哈希表[父亲儿子集合] 需要额外存储已经过世的人。注有坑使用List要超时只能使用Set 时间复杂度 ThroneInheritance(kingName)O(1)birth(parentName, childName)O(1)death(name)O(1)getInheritanceOrder()O(n)其中 n 是当前树中的总人数。需要对整棵树进行一次前序遍历时间复杂度为 O(n)。 空间复杂度O(n)。 class ThroneInheritance {MapString,ListString parent;SetString hasDead;String king;public ThroneInheritance(String kingName) {kingkingName;parentnew HashMap();hasDeadnew HashSet();}public void birth(String parentName, String childName) {if(!hasDead.contains(parentName)){ListString lparent.getOrDefault(parentName,new ArrayList());l.add(childName);parent.put(parentName,l);}}public void death(String name) {hasDead.add(name);}public ListString getInheritanceOrder() {ListString resnew ArrayList();dfs(king,res);return res;}public void dfs(String p,ListString res){if(!hasDead.contains(p))res.add(p);for(String s:parent.getOrDefault(p,new ArrayList())){dfs(s,res);}}
}有任何问题欢迎评论区交流欢迎评论区提供其它解题思路代码也可以点个赞支持一下作者哈~