void btree_foreach(BTree node, VisitorFuncInt visit, void *extra_data) { if (node != NULL) { visit(btree_data(node), extra_data); btree_foreach(btree_left(node), visit, extra_data); btree_foreach(btree_right(node), visit, extra_data); } }
int btree_foreach(node_bt *root, int(*func)(void*)) { if (root == NULL) return 0; if (func(root->data) != 0) return -1; btree_foreach(root->left, func); btree_foreach(root->right, func); return -1; }