Для своего проекта в университете я реализую класс дерева AVL на C ++ с символами для значений. У нас есть автогрейдер, который указывает на наши ошибки случайными тестами, если они есть. Я запускал его несколько раз, довольно много, и не получил ошибок, что означает, что он должен иметь нормальную логику. Однако иногда я получал сообщение об ошибке, в котором говорилось, что мои предварительные и последующие обходы неверны. Это одна из фактических ошибок, которые я получил:
YOUR PREORDER: "IECABDGFHPLKOUSRYX", YOUR POSTORDER: "BADCFHGEKOLRSXYUPI"
CORRECT PREORDER: "ECABDOIGFHKLURPSYX", CORRECT POSTORDER: "BADCFHGLKIPSRXYUOE"
Да, эти деревья еще сбалансированы, но как-то неправильно сложены. Как мне отладить это? У меня есть функция, которая может восстанавливать деревья с использованием предварительного и последующего порядка, но я думаю, что порядок размещения переменных имеет значение. В противном случае у меня нет возможности узнать порядок ввода узлов и где мой алгоритм пошел не так.