def test_path(): ''' 1 / \ 2 3 / \ / \ 4 5 6 7 ''' root = Node(1) lnode = Node(2) rnode = Node(3) root.setChildren(lnode, rnode) lnode.setChildren(Node(4), Node(5)) rnode.setChildren(Node(6), Node(7)) btree = BinaryTree(root) assert(btree.height() == 2) nodes = btree.path(7) assert(len(nodes) == 3) for n in nodes: print n.value # find path using a node reference nodes = btree.path(rnode) for n in nodes: print n.value assert(btree.path(8) == [])
def TC1(): # prefix equation tree : "+a*bc" ''' + / \ a * / \ b c ''' root = Node("+") lnode = Node("a") rnode = Node("*") root.setChildren(lnode, rnode) rlnode = Node("b") rrnode = Node("c") rnode.setChildren(rlnode, rrnode) btree = BinaryTree(root) assert(btree.height() == 2) print 'Preorder: ', btree.preorder_traversal() print l = [] # define a lambda function that collates individual node values into a list collate_fn = lambda kwargs, data : kwargs['lst'].append(data) btree.preorder_traversal(collate_fn, lst=l) assert (l == ['+', 'a', '*', 'b', 'c']) print 'Postorder: ', btree.postorder_traversal() print l = [] btree.postorder_traversal(collate_fn, lst=l) assert (l == ['a', 'b', 'c', '*', '+']) print 'Inorder: ', btree.inorder_traversal() print l = [] btree.inorder_traversal(collate_fn, lst=l) assert (l == ['a', '+', 'b', '*', 'c']) print 'Level order: ', btree.levelorder_traversal() print l = [] btree.levelorder_traversal(collate_fn, lst=l) assert (l == ['+', 'a', '*', 'b', 'c']) print 'Left View: ', btree.left_view() print l = [] btree.left_view(collate_fn, lst=l) assert (l == ['+', 'a', 'b']) print 'Right View: ', btree.right_view() print l = [] btree.right_view(collate_fn, lst=l) assert (l == ['+', '*', 'c']) print 'Top View: ', btree.top_view() print l = [] btree.top_view(collate_fn, lst=l) assert (l == ['+', 'a', '*', 'c']) print 'Top View L-R: ', btree.top_view_LR() print l = [] btree.top_view_LR(collate_fn, lst=l) assert (l == ['a', '+', '*', 'c']) print 'Bottom View: ', btree.bottom_view() print l = [] btree.bottom_view(collate_fn, lst=l) assert (l == ['a', 'b', '*', 'c']) print 'Testcase TC1 passed!'