000
22.11.2006, 19:44 Uhr
mathon
|
Hallo,
ich implementiere gerade einen Binary Search Tree, der double Numbers in den einzelnen Knoten speichert. Nun bin ich gerade dabei eine Funktion zu schreiben, die den größen Knoten aus dem Tree löscht. Ich habe dies so versucht:
Code: |
template <class Item> void bst_remove_max(binary_tree_node<Item>*& root_ptr, Item& removed) // Precondition: root_ptr is a root pointer of a non-empty binary // search tree. // Postcondition: The largest item in the binary search tree has been // removed, and root_ptr now points to the root of the new (smaller) // binary search tree. The reference parameter, removed, has been set // to a copy of the removed item. { binary_tree_node<Item> *cursor; cursor = root_ptr; if(root_ptr != NULL) { if(cursor->right() == NULL) { root_ptr = root_ptr->left(); delete cursor; else { bst_remove_max(cursor->right(), removed); } } }
|
Würdet ihr das auch so machen bzw. wäre dieses funktion so korrekt? - bin mir nicht sicher ob ich da noch einen denkfehler drinnen habe.
lg matti |