Проверка, является ли двоичное дерево зеркальным или симметричным.

Каков основной алгоритм проверки симметричности дерева. Поскольку это двоичное дерево, я бы предположил, что это будет рекурсивное определение сортировки.

Формальный вопрос ниже:

Бинарное дерево является зеркальным отображением самого себя, если его левое и правое поддеревья являются идентичными зеркальными отображениями. т.е. двоичное дерево симметрично. Лучше всего это пояснить на нескольких примерах.

  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

ИСТИНА

На выбранном языке программирования определите структуру класса BTree / C и связанный метод, чтобы проверить, является ли дерево зеркальным отображением. . Для языков со статической типизацией вы можете предположить, что все значения узлов являются целыми числами.

Class/structure definition
BTree {
  BTree left;
  BTree right;
  int value;
}

Предположим, что корень дерева отслеживается вызывающей стороной и для него вызывается функция isMirror ().

Кроме того, при определении класса не забудьте предоставить конструктор без аргументов и методы получения / установки, если элементы данных не являются общедоступными.

50
задан Rohit 13 March 2014 в 18:18
поделиться