from models import BinaryNode a_node = BinaryNode("A") b_node = BinaryNode("B") c_node = BinaryNode("C") d_node = BinaryNode("D") e_node = BinaryNode("E") root = a_node root.left = b_node root.right = c_node root.right.right = d_node root.right.left = e_node # preorder traversal def traverse(root, target): if root is None: return False if root.data == target.data: return True left = traverse(root.left, target) right = traverse(root.right, target) if left or right: return True else:
from models import BinaryNode # TEST 1 # root = BinaryNode("A") # root.left = BinaryNode("B") # root.left.left = BinaryNode("D") # root.right=BinaryNode("C") # root.right.left = BinaryNode("E") # root.right.right = BinaryNode("F") # TEST 2 root = BinaryNode("A") root.left = BinaryNode("B") root.left.left = BinaryNode("C") root.left.left.left = BinaryNode("E") root.left.left.right = BinaryNode("D") def print_bin_node(lst): for x in range(0, len(lst)): try: lst[x] = lst[x].data except: continue return lst def print_paths(root, lst): if root is None: return []
# given a binary tree, return a list of it's inorder traversal result from models import BinaryNode givenTree = BinaryNode(4) givenTree.insertNode(2) givenTree.insertNode(6) givenTree.insertNode(1) givenTree.insertNode(3) givenTree.insertNode(5) givenTree.insertNode(7) def iterativeInOrder(root): if root is None: return [] retList = [] stk = [] curr = root while curr is not None or len(stk) > 0: if curr is not None: stk.insert(0, curr) curr = curr.getLeft() else: front = stk[0] retList.append(front) stk.remove(front)