#include #include #include "bintree.h" using namespace std; void test_node_linked(TreeItem * node, TreeItem * new_node, Child left_or_right) { assert(node); assert(new_node); if (left_or_right == LEFT) if (node->child_left == new_node) cout << "test_node_linked left passed\n"; else cout << "*** test_node_linked FAILED ***\n"; if (left_or_right == RIGHT) if (node->child_right == new_node) cout << "test_node_linked right passed\n"; else cout << "*** test_node_linked FAILED ***\n"; } int main(int argc, char **argv) { BinTree t; TreeItem *tree_root, *new_node_left, *new_node_right, *bottom_left, *bottom_right; tree_root = t.create_node_and_link(tree_root, LEFT, 1); new_node_left = t.create_node_and_link(tree_root, LEFT, 2); new_node_right = t.create_node_and_link(tree_root, RIGHT, 3); /* test that 1st level linking works */ test_node_linked(tree_root, new_node_left, LEFT); test_node_linked(tree_root, new_node_right, RIGHT); t.create_node_and_link(new_node_left, LEFT, 4); bottom_left = t.create_node_and_link(new_node_left, RIGHT, 5); bottom_right = t.create_node_and_link(new_node_right, LEFT, 6); t.create_node_and_link(new_node_right, RIGHT, 7); t.create_node_and_link(bottom_left, RIGHT, 8); t.create_node_and_link(bottom_right, LEFT, 9); cout << "DFT:" << endl; t.dft(tree_root); cout << endl << "BFT:" << endl; t.bfs(tree_root); // DFT iterator tests // 28/4/2008 - test the iterator cout << endl << "BFT iterator test" << endl; BinTree::bft_iterator i = t.begin(); for (; i != t.end(); i++) { cout << *i << " "; } }