#!/usr/bin/env python3 """ binary_traversal_demo.py This program demonstrates the three strategies for traversing a binary tree: 1. preorder 2. inorder 3. postorder @author Richard White @version 2017-04-18 """ from binary_tree_class import BinaryTree def preorder(binary_tree, result): """Returns a list of the values in binary_tree, ordered according to a preorder traversal: 1. Begin at root and evaluate 2. Call preorder on left child (recursively) 3. Call preorder on right child (recursively) """ if binary_tree is None: pass else: result.append(binary_tree.get_root_val()) preorder(binary_tree.get_left_child(),result) preorder(binary_tree.get_right_child(),result) return result def inorder(binary_tree, result): """Returns a list of the values in binary_tree, ordered according to an inorder traversal: 1. Call inorder recursively on left subtree 2. Visit root node 3. Call inorder recursively on right subtree """ pass def postorder(binary_tree, result): """Returns a list of the values in binary_tree, ordered according to an postorder traversal. """ pass def main(): bt = BinaryTree("a") bt.insert_left("g") bt.insert_left("d") bt.insert_left("b") bt.get_left_child().get_left_child().insert_right("h") bt.get_left_child().insert_right("e") bt.get_left_child().get_right_child().insert_right("i") bt.insert_right("c") bt.get_right_child().insert_right("f") # print(bt) print(""" The Binary Tree a / \ b c / \ \ d e f / \ \ g h i """) result = [] print("Preorder Traversal") print(preorder(bt,result)) result = [] print("Inorder Traversal") print(inorder(bt,result)) result = [] print("Postorder Traversal") print(postorder(bt,result)) if __name__ == "__main__": main()