2024.4.7
题目来源
我的题解
方法一 哈希表+多叉树的前序遍历
class throneinheritance {
map<string,list<string>> parent;
set<string> hasdead;
string king;
public throneinheritance(string kingname) {
king=kingname;
parent=new hashmap<>();
hasdead=new hashset<>();
}
public void birth(string parentname, string childname) {
if(!hasdead.contains(parentname)){
list<string> l=parent.getordefault(parentname,new arraylist<>());
l.add(childname);
parent.put(parentname,l);
}
}
public void death(string name) {
hasdead.add(name);
}
public list<string> getinheritanceorder() {
list<string> res=new arraylist<>();
dfs(king,res);
return res;
}
public void dfs(string p,list<string> res){
if(!hasdead.contains(p))
res.add(p);
for(string s:parent.getordefault(p,new arraylist<>())){
dfs(s,res);
}
}
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~
发表评论