Каков алгоритм основы для тестирования, если дерево симметрично. Поскольку это двоичное дерево, я бы предположил, что это будет рекурсивное определение видов
Формальный вопрос ниже:
Двоичное дерево является зеркальным отображением самого себя, если его левое и правое поддеревья являются идентичными зеркальными изображениями, т.е. бинарное дерево является симметричным. Это лучше всего объяснить несколькими примерами.
1
/ \
2 2
ИСТИНА
1
/ \
2 2
\
3
FALSE
1
/ \
2 2
/ \ / \
4 3 3 4
ИСТИНА
1
/ \
2 2
/ \ / \
3 4 3 4
FALSE
1
/ \
2 2
/ \
3 3
ИСТИНА
На выбранном языке программирования определите структуру BTree class/C и связанный с ней метод, чтобы проверить, является ли дерево зеркальным отображением. Для статически типизированных языков вы можете предположить, что значения node являются целыми числами.
Class/structure definition
BTree {
BTree left;
BTree right;
int value;
}
Предположим, что корень дерева отслеживается вызывающим и функция isMirror() вызывается на нем.
Кроме того, если вы определяете класс, не забудьте предоставить конструкторы без аргументов и методы getter/setter, если элементы данных недоступны.