From 75f20754030726569ac8cbc243628c18e523f3bb Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 26 Oct 2009 00:54:11 +0000 Subject: Speed up dmnsn_kD_splay_deepest_recursive() a bit. --- bench/libdimension/kD_splay_tree.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'bench') diff --git a/bench/libdimension/kD_splay_tree.c b/bench/libdimension/kD_splay_tree.c index 44a8ef1..bb20a14 100644 --- a/bench/libdimension/kD_splay_tree.c +++ b/bench/libdimension/kD_splay_tree.c @@ -71,25 +71,24 @@ dmnsn_kD_splay_deepest_recursive(dmnsn_kD_splay_node *node, unsigned int depth, unsigned int *deepest) { dmnsn_kD_splay_node *left = NULL, *right = NULL; - unsigned int left_depth = 0, right_depth = 0; + if (node->contains) { - left = dmnsn_kD_splay_deepest_recursive(node->contains, - depth + 1, &left_depth); + left = dmnsn_kD_splay_deepest_recursive(node->contains, depth + 1, deepest); } if (node->container) { right = dmnsn_kD_splay_deepest_recursive(node->container, - depth + 1, &right_depth); + depth + 1, deepest); } - if (right && right_depth > left_depth) { - *deepest = right_depth; + if (right) { return right; } else if (left) { - *deepest = left_depth; return left; - } else { + } else if (depth >= *deepest) { *deepest = depth; return node; + } else { + return NULL; } } -- cgit v1.2.3