1600. 王位继承顺序
题目链接:1600. 王位继承顺序
代码如下:
class ThroneInheritance {
public:
ThroneInheritance(string kingName) {
this->king=kingName;
}
void birth(string parentName, string childName) {
edges[parentName].push_back(childName);
}
void death(string name) {
dead.insert(name);
}
vector<string> getInheritanceOrder() {
vector<string> res;//存储结果
preOrder(king,res);
return res;
}
private:
unordered_map<string,vector<string>> edges;
unordered_set<string> dead;
string king;
void preOrder(const string& name,vector<string>& res)
{
if(!dead.count(name))
{
res.push_back(name);
}
if(edges.count(name))
{
for(const string& childName:edges[name])
{
preOrder(childName,res);
}
}
}
};
/**
* Your ThroneInheritance object will be instantiated and called as such:
* ThroneInheritance* obj = new ThroneInheritance(kingName);
* obj->birth(parentName,childName);
* obj->death(name);
* vector<string> param_3 = obj->getInheritanceOrder();
*/