Коли програма завершиться, пам'ять і так звільниться. Проблема може бути лише якщо програма працює постійно (чи достатньо довго).
Я маю на увазі, що не треба робити
void deleteleaf(leaf** root) {
cout << "Введіть індекс листя, яке ви хочите видалити: ";
int num;
cin >> num;
Треба робити щось на кшталт
void deleteleaf(leaf** root, int num) {
...
}
...
cout << "Введіть індекс листя, яке ви хочите видалити: ";
int num;
cin >> num;
deleteleaf(&root, num);
Чи навіть
int input_leaf_to_delete() {
cout << "Введіть індекс листя, яке ви хочите видалити: ";
int num;
cin >> num;
}
void deleteleaf(leaf** root, int num) {
...
}
...
deleteleaf(&root, input_leaf_to_delete());
Ваша функція надто конкретна - от саме ввести, саме з cin і саме українською спитати. Так функції можна використовувати незалежно одна від одної.