Eliminated tail recursion.
authorThomas Lopatic <thomas@lopatic.de>
Tue, 27 Mar 2007 22:02:22 +0000 (22:02 +0000)
committerThomas Lopatic <thomas@lopatic.de>
Tue, 27 Mar 2007 22:02:22 +0000 (22:02 +0000)
src/lq_avl.c

index 3896c0d..6735a3b 100755 (executable)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: lq_avl.c,v 1.6 2007/03/27 19:37:13 tlopatic Exp $
+ * $Id: lq_avl.c,v 1.7 2007/03/27 22:02:22 tlopatic Exp $
  */
 
 #include <stddef.h>
@@ -410,12 +410,12 @@ static void post_delete(struct avl_tree *tree, struct avl_node *node)
   post_delete(tree, parent->parent);
 }
 
-static struct avl_node *local_min(struct avl_node *node)
+static inline struct avl_node *local_min(struct avl_node *node)
 {
-  if (node->left == NULL)
-    return node;
+  while (node->left != NULL)
+    node = node->left;
 
-  return local_min(node->left);
+  return node;
 }
 
 static void delete_worker(struct avl_tree *tree, struct avl_node *node)