See More

root = {'name': 'Alice', 'children': [{'name': 'Bob', 'children': [{'name': 'Darya', 'children': []}]}, {'name': 'Caroline', 'children': [{'name': 'Eve', 'children': [{'name': 'Gonzalo', 'children': []}, {'name': 'Hadassah', 'children': []}]}, {'name': 'Fred', 'children': []}]}]} def find8LetterName(root): stack = [root] while len(stack) != 0: node = stack.pop() print('Searching node ' + node['name'] + '...') if len(node['name']) == 8: return node['name'] for childNode in reversed(node['children']): # Preorder depth-first search: #stack.append(childNode) # Postorder depth-first search: stack.insert(0, childNode) # Value was not found or there are no children. return None # BASE CASE print('Found an 8-letter name: ' + str(find8LetterName(root)))