1600. 皇位继承顺序
题目描述
解题思路
1、哈希表保存父子间的关系
2、保存死亡名单
3、前序遍历多叉树获取继承顺序并排除已死亡人员
代码实现
class ThroneInheritance:
def __init__(self, kingName: str):
self.king = kingName
self.deathed = set()
self.nodes = defaultdict(list)
def birth(self, parentName: str, childName: str) -> None:
self.nodes[parentName].append(childName)
# brother = self.nodes.get(parentName, None)
# if brother:
# brother.append(childName)
# else:
# brother = []
# self.nodes[parentName] = brother
def death(self, name: str) -> None:
self.deathed.add(name)
def getInheritanceOrder(self) -> List[str]:
self.ans = []
def pre_order(name: str) -> None:
if name not in self.deathed:
self.ans.append(name)
if name in self.nodes:
for child in self.nodes[name]:
pre_order(child)
pre_order(self.king)
return self.ans
# Your ThroneInheritance object will be instantiated and called as such:
# obj = ThroneInheritance(kingName)
# obj.birth(parentName,childName)
# obj.death(name)
# param_3 = obj.getInheritanceOrder()