class Node: def __init__(self, data): self.data = data self.visited = False self.children = [] def is_internal_external(self): if self.children: return True return False def get_children(self): return self.children def __str__(self): return self.data def __repr__(self): return self.__str__() def traverse (node, stack = None): if stack is None: stack = [] if node.children is not None: for child in node.children: if not child.visited: child.visited = True stack.append(child) print(child.data) traverse(child) else: if len(stack) > 0: traverse(stack[len(stack) - 1]) stack.pop() root = Node(6) node_two = Node(2) node_seven = Node(7) node_one = Node(1) node_four = Node(4) node_three = Node(3) node_five = Node(5) node_six = Node(6) node_nine = Node(9) root.children = [node_two, node_seven, node_one] node_two.children = [node_four, node_three] node_seven.children = [node_five, node_six] traverse(root)