From 6fee34f34c046617245fb33943be552c1c5a4b82 Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Sun, 2 Jan 2022 04:53:19 +0000 Subject: in-order successor node --- kc/core/vm_tree.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'kc/core') 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) -- cgit v1.3.1-1-g115d