diff options
| author | Ada Christine <adachristine18@gmail.com> | 2022-01-02 04:53:19 +0000 |
|---|---|---|
| committer | Ada Christine <adachristine18@gmail.com> | 2022-01-02 04:53:19 +0000 |
| commit | 6fee34f34c046617245fb33943be552c1c5a4b82 (patch) | |
| tree | a17eb7a973312310031630e110746e669b5aef35 | |
| parent | 76cb5ad6bc6d020c4288fe558cfc15259e7807e0 (diff) | |
in-order successor node
| -rw-r--r-- | kc/core/vm_tree.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/kc/core/vm_tree.c b/kc/core/vm_tree.c index bfb0c8f..b0a0043 100644 --- a/kc/core/vm_tree.c +++ b/kc/core/vm_tree.c @@ -288,14 +288,22 @@ struct vm_tree_node *vmn_predecessor_key( } // search for the successor node for a given key -struct vm_tree_node *vmn_successor_key( - struct vm_tree_node *N, - struct vm_tree_key *key) +struct vm_tree_node *vmn_successor_node( + struct vm_tree_node *N) { - (void)N; - (void)key; - //TODO: write - return NULL; + if (N && N->right) + { + return vmn_min(N->right); + } + + struct vm_tree_node *p = n->parent; + while (p && n == p->right) + { + n = p; + p = p->parent; + } + + return p; } struct vm_tree_node *vmn_min(struct vm_tree_node *node) |
