Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int avltree_position_dirent_sorted(const struct avltree_node *key,
- const struct avltree *tree,
- struct avltree_node **left,
- struct avltree_node **right)
- {
- struct avltree_node *node = tree->root;
- struct avltree_node *parent = NULL;
- int res = 0;
- *left = NULL;
- *right = NULL;
- while (node) {
- res = avl_dirent_dirent_sorted_cmpf(node, key);
- if (res == 0)
- break;
- parent = node;
- if (res > 0))
- node = node->left;
- else
- node = node->right;
- }
- if (parent != NULL) {
- switch (res) {
- case -1:
- *left = avltree_prev(parent);
- *right = parent;
- break;
- case 0:
- break;
- case 1:
- *left = parent;
- *right = avltree_next(parent);
- break;
- default:
- assert(false);
- }
- }
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement