Для справки: мы создаем класс BinaryTree, который должен имеют следующие функции
Код: Выделить всё
template
class BinaryTree {
private:
std::shared_ptr rootptr;
protected:
// Removes the target value from the tree
virtual std::shared_ptrisLeaf()) {
if(subTreePtr->getLeftChildPtr()) {
subTreePtr->setItem(subTreePtr->getLeftChildPtr()
->getItem());
moveValuesUpTree(subTreePtr->getLeftChildPtr());
} else if(subTreePtr->getRightChildPtr()) {
subTreePtr->setItem(subTreePtr->getRightChildPtr()
->getItem());
moveValuesUpTree(subTreePtr->getRightChildPtr());
} // end if
} // end if
} // end if
return subTreePtr;
} // end moveValuesUpTree
Спасибо!
Изменить: функция moveValuesUpTree не удаляет узел, а только его значение. Так, например, вызов moveValuesUpTree(2) для дерева, вывод которого (постпорядок) равен 74625381, будет равен 77645831.
Подробнее здесь: https://stackoverflow.com/questions/585 ... inary-tree
Мобильная версия