Симметрическое удаление дерева
Нужно удалить узлы дерева в симметрическом порядке справа налево. Написала код для прямого удаления, а вот как реализовать симметрическое?
void FreeTree(TreeNode* proot) // указатель на корень дерева
{
if (proot == NULL) // дерево пустое
return;
FreeTree(proot->right); // удаление правого поддерева
FreeTree(proot->left); // удаление левого поддерева
free(proot); // удаление корня
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну, если симметричный — это левый потомок, корень, правый потомок, то
void FreeTree(TreeNode* proot) // указатель на корень дерева
{
if (proot == NULL) // дерево пустое
return;
FreeTree(proot->left); // удаление левого поддерева
TreeNode* right = proot->right;
free(proot); // удаление корня
FreeTree(right); // удаление правого поддерева
}
Вы это хотели?