https://leetcode.com/problems/invert-binary-tree/
Я придумал это решение
Код: Выделить всё
TreeNode* invertTree(TreeNode* root) {
if (root == nullptr) {
return root;
}
root -> left = invertTree(root -> right);
root -> right = invertTree(root -> left);
return root;
}
На втором этапе, когда я инвертирую root -> left, я инвертирую обратно то, что ранее инвертировал на последнем шаге.
Хотя логический недостаток понятен, я пытаюсь понять, почему я получил эту ошибку во время выполнения
Код: Выделить всё
==22==ERROR: AddressSanitizer: heap-use-after-free on address 0x5030000000d8 at pc 0x55b911822bb3 bp 0x7ffc24fc5710 sp 0x7ffc24fc5708
READ of size 8 at 0x5030000000d8 thread T0
#0 0x55b911822bb2 in __TreeNodeUtils__::freeTreeHelper(TreeNode*) (solution+0x1abbb2)
#1 0x55b911822b84 in __TreeNodeUtils__::freeTreeHelper(TreeNode*) (solution+0x1abb84)
#2 0x55b911822afa in __TreeNodeUtils__::freeTree(TreeNode*&) (solution+0x1abafa)
#3 0x55b911800071 in main solution.cpp:63:9
Подробнее здесь: https://stackoverflow.com/questions/798 ... tree-inver
Мобильная версия