summaryrefslogtreecommitdiff
path: root/tree/src/cTree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tree/src/cTree.cpp')
-rw-r--r--tree/src/cTree.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/tree/src/cTree.cpp b/tree/src/cTree.cpp
index 943819c..6a871dd 100644
--- a/tree/src/cTree.cpp
+++ b/tree/src/cTree.cpp
@@ -30,10 +30,13 @@ void cTree::insert(string _data)
void cTree::remove(cData* _data)
{
- list<cData> dataList; //List of Data that has to be re-inserted into the tree
- root->remove(_data, &dataList, &root);
+ sSubTree subTree;
+ root->remove(_data, &subTree, &root);
- insertList(&dataList);
+ root->insert(subTree.nextSmaller->getFirstNode(&root), &root); //Insert new root
+ //Insert remaining subtree
+ root->insert(subTree.nextSmaller, &root);
+ root->insert(subTree.nextBigger, &root);
}//remove
void cTree::getList(list<cData>* _list)