#!/usr/bin/env python __author__ = "bt3" from collections import deque from binary_search_tree import BST, Node from binary_tree import BT, Node def BFT(tree): current = tree.root nodes = [] queue = deque() queue.append(current) while queue: current = queue.popleft() nodes.append(current.item) if current.left: queue.append(current.left) if current.right: queue.append(current.right) return nodes def preorder(tree, nodes=None): nodes = nodes or [] if tree: nodes.append(tree.item) if tree.left: preorder(tree.left, nodes) if tree.right: preorder(tree.right, nodes) return nodes def postorder(tree, nodes=None): nodes = nodes or [] if tree: if tree.left: nodes = postorder(tree.left, nodes) if tree.right: nodes = postorder(tree.right, nodes) nodes.append(tree.item) return nodes def inorder(tree, nodes=None): nodes = nodes or [] if tree: if tree.left: nodes = inorder(tree.left, nodes) nodes.append(tree.item) if tree.right: nodes = inorder(tree.right, nodes) return nodes if __name__ == '__main__': # bt bt = BT() l = [10, 5, 6, 3, 8, 2, 1, 11, 9, 4] for i in l: bt.add(i) print 'BT...' print 'Original: ', l print 'Preorder: ', preorder(bt.root) print 'Postorder: ', postorder(bt.root) print 'Inorder: ', inorder(bt.root) print 'Breath: ', BFT(bt) # bst bst = BST() l = [10, 5, 6, 3, 8, 2, 1, 11, 9, 4] for i in l: bst.add(i) print print 'BST ...' print 'Original: ', l print 'Preorder: ', preorder(bst.root) print 'Postorder: ', postorder(bst.root) print 'Inorder: ', inorder(bst.root) print 'Breath: ', BFT(bst)