struct bst_node *prev, *iter; prev = node; while (prev->bst_link[0] != NULL) prev = prev->bst_link[0]; bst_balance (trav->table); trav->height = 0; for (iter = trav->table->bst_root; iter != prev; ) if (trav->table->bst_compare (prev->bst_data, iter->bst_data, trav->table->bst_param) < 0) { trav->stack[trav->height++] = iter; iter = iter->bst_link[0]; } else iter = iter->bst_link[1]; trav->node = iter->bst_link[1]; return prev->bst_data;