增城网站建设方案360开户
仅仅只调用10次get获取顺序,说明顺序可以每次调用的时候现算出来。
一个国王可有有N个孩子,这里表示这种关系的数据结构是N叉树,这里我们不需要去用指针实现一颗N二叉树,可以用hashmap邻接表的方法实现N叉树(类似于图),同时涉及到dead,我们也不需要删除节点,只需要维护一个set软删除。获得顺序即是一次dfs即可。代码:
class ThroneInheritance {
private:unordered_map<string, vector<string>> children;unordered_set<string> dead;string king;vector<string> order;void dfs(string name) {for(auto child : children[name]) {if(!dead.count(child)) {order.push_back(child);}dfs(child);}}public:ThroneInheritance(string kingName) {king = kingName;}void birth(string parentName, string childName) {children[parentName].push_back(childName);}void death(string name) {dead.insert(name);}vector<string> getInheritanceOrder() {order.clear();if(!dead.count(king)) {order.push_back(king);}dfs(king);return order;}
};