summaryrefslogtreecommitdiff
path: root/src/util/SKBinTree.c
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-07-05 09:01:57 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-07-05 09:01:57 +0000
commit27101c7b64409abfa493e64bed5de72ac84bb1ce (patch)
tree4bfaf0a5b0fcc4d7119325d665f06165380c72b5 /src/util/SKBinTree.c
parent287abd55c7e41b10718810c7dec8b3bf939d8cf6 (diff)
Latest changes for the ActiveThorns.
Tom git-svn-id: http://svn.cactuscode.org/flesh/trunk@649 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/util/SKBinTree.c')
-rw-r--r--src/util/SKBinTree.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/util/SKBinTree.c b/src/util/SKBinTree.c
index 64834401..fb55d5bf 100644
--- a/src/util/SKBinTree.c
+++ b/src/util/SKBinTree.c
@@ -4,6 +4,8 @@
@author Tom Goodale
@desc
Routines to deal with binary trees keyed by strings.
+ The tree is a threaded tree, i.e. it can also be
+ traversed, inorder, like a linked list.
@enddesc
@@*/
@@ -47,6 +49,7 @@ t_sktree *SKTreeStoreData(t_sktree *root, t_sktree *subtree,
{
subtree->left=NULL;
subtree->right=NULL;
+ subtree->next=NULL;
subtree->data = data;
@@ -57,10 +60,13 @@ t_sktree *SKTreeStoreData(t_sktree *root, t_sktree *subtree,
if((order = STR_CMP(key, root->key)) < 0)
{
root->left = subtree;
+ subtree->next = root ;
}
else
{
root->right = subtree;
+ subtree->next = root->next;
+ root->next = subtree;
}
}
}
@@ -206,6 +212,20 @@ void SKTreePrintNodes(t_sktree *root, int depth, void (*print_node)(void *, int)
}
+ /*@@
+ @routine SKTreeFindNode
+ @date Mon Jul 5 10:09:30 1999
+ @author Tom Goodale
+ @desc
+ Finds a given node in the tree.
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
t_sktree *SKTreeFindNode(t_sktree *root, const char *key)
{
int order;
@@ -237,6 +257,28 @@ t_sktree *SKTreeFindNode(t_sktree *root, const char *key)
return node;
}
+ /*@@
+ @routine SKTreeFindFirst
+ @date Mon Jul 5 10:09:57 1999
+ @author Tom Goodale
+ @desc
+ Finds the first node in the tree (the leftmost one).
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+t_sktree *SKTreeFindFirst(t_sktree *root)
+{
+ for(; root->left ; root = root->left);
+
+ return root;
+}
+
+
/*@@