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