static void traverse_inorder(BTREE_NODE_p_t node, BTREE_VISIT_PROC_p_t visit_proc){ if(node!=NULL){ traverse_inorder(node->left, visit_proc); visit_proc(node->data); traverse_inorder(node->right, visit_proc); } }
void traverse_inorder(struct tree *node) { if (node == NULL) return; traverse_inorder(node->left); print_node(node); traverse_inorder(node->right); #ifndef TWO_DIMENSION traverse_inorder(node->up); traverse_inorder(node->down); #endif }
int main() { auto tree = BinTree<int>(); std::cout << "size: " << tree.size() << '\n'; std:: cout<< "maxDepth: " << tree.maxDepth() << '\n'; std::cout << "traverse in order: "; tree.traverse_inorder(); std:: cout << '\n'; tree.insert(2); tree.insert(1); tree.insert(3); std::cout << tree.root->value << '\n'; std::cout << tree.root->left->value << '\n'; std::cout << tree.root->right->value << '\n'; std::cout << "lookup 1: " << tree.lookup(1) << '\n'; std::cout << "lookup 7: " << tree.lookup(7) << '\n'; std::cout << "size: " << tree.size() << '\n'; std:: cout<< "maxDepth: " << tree.maxDepth() << '\n'; tree.insert(5); tree.insert(7); std::cout << "size: " << tree.size() << '\n'; std::cout << "maxDepth: " << tree.maxDepth() << '\n'; std::cout << "traverse in order: "; tree.traverse_inorder(); std:: cout << '\n'; std::cout << "hasPathSum\n"; std::cout << tree.hasPathSum(3) << '\n'; std::cout << tree.hasPathSum(4) << '\n'; std::cout << tree.hasPathSum(17) << '\n'; tree.printPaths(); tree.insert(4); std::cout << "after insert(4):\n"; tree.printPaths(); std::cout << "-------------\n"; std::cout << "traverse in order: "; tree.traverse_inorder(); std:: cout << '\n'; tree.mirror(); std::cout << "traverse in order: "; tree.traverse_inorder(); std:: cout << '\n'; }
BTREE_ID_t BTREE_traverse_tree(BTREE_ID_t tree,BTREE_TRAVERSE_ORDER_e_t order,BTREE_VISIT_PROC_p_t visit_proc){ switch (order) { case BTREE_PREORDER: traverse_preorder(tree->root, visit_proc); break; case BTREE_INORDER: traverse_inorder(tree->root, visit_proc); break; case BTREE_POSTORDER: traverse_postorder(tree->root,visit_proc); break; default: CDA_ASSERT(CDA_FALSE); break; } return tree; }