root = {'data': 'A', 'children': [{'data': 'B', 'children': [{'data': 'D', 'children': []}]}, {'data': 'C', 'children': [{'data': 'E', 'children': [{'data': 'G', 'children': []}, {'data': 'H', 'children': []}]}, {'data': 'F', 'children': []}]}]} def preorderTraverse(node): print(node['data'], end=' ') # Access this node's data. if len(node['children']) > 0: # RECURSIVE CASE for child in node['children']: preorderTraverse(child) # Traverse child nodes. # BASE CASE return preorderTraverse(root)