diff options
Diffstat (limited to 'tree/src/cTree.cpp')
-rw-r--r-- | tree/src/cTree.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/tree/src/cTree.cpp b/tree/src/cTree.cpp index 6a871dd..ef6556e 100644 --- a/tree/src/cTree.cpp +++ b/tree/src/cTree.cpp @@ -32,11 +32,31 @@ void cTree::remove(cData* _data) { sSubTree subTree; root->remove(_data, &subTree, &root); + cout << "Remove Finished\n"; + + if(subTree.nextBigger && subTree.nextSmaller) + { + cNode* newRoot = subTree.nextSmaller->getFirstNode( &(subTree.nextSmaller)); + cout << "Got new root\n"; + + root->insert(newRoot, &root ); + cout << "Inserted new root\n"; + } + if (subTree.nextBigger) + { + root->insert(subTree.nextBigger, &root); + cout << "nextBigger inserted\n"; + } + if(subTree.nextSmaller) + { + root->insert(subTree.nextSmaller, &root); + cout << "nextSmaller inserted\n"; + } - 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) |