Симметрическое удаление дерева

Нужно удалить узлы дерева в симметрическом порядке справа налево. Написала код для прямого удаления, а вот как реализовать симметрическое?

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); // удаление правого поддерева
}

Вы это хотели?

→ Ссылка