5
public Tree(String name, List<Tree> child) {11
class ThroneInheritance {12
private Set<String> death;14
private Map<String, Tree> addtoTree;16
public ThroneInheritance(String kingName) {17
death = new HashSet<>();18
tree = new Tree(kingName, new ArrayList());19
addtoTree = new HashMap();20
addtoTree.put(kingName, tree);23
public void birth(String parentName, String childName) {24
Tree tmp = addtoTree.get(parentName);25
Tree childtree = new Tree(childName, new ArrayList());26
tmp.child.add(childtree);27
addtoTree.put(childName, childtree);30
public void death(String name) {34
public List<String> getInheritanceOrder() {35
List<String> ans = new ArrayList<>();36
preOreder(tree, ans, death);40
void preOreder(Tree n, List<String> ans, Set<String> death) {41
if (n == null) return;42
if (!death.contains(n.name)) ans.add(n.name);43
for (Tree name : n.child) {44
preOreder(name, ans, death);