Нарисуйте бинарное дерево, учитывая ATTA как обходы в порядке и обратном порядке

Меня попросили нарисовать бинарное дерево поиска, в котором как обход по порядку, так и обход по порядку обрабатывают узлы в порядке "ATTA". Я пробовал много разных способов, но в итоге он работает только для одного из методов обхода.


person user2883256    schedule 17.10.2013    source источник


Ответы (1)


Я действительно считаю, что вы просто говорите об обычном двоичном дереве, потому что создать такое двоичное дерево поиска невозможно.

Учитывая, что пост-порядок заканчивается на A, мы знаем, что корень должен быть A.

Учитывая, что у нас есть только 2 A в порядке, а корень A, мы знаем, что либо левое, либо правое поддеревья корня пусты.

Учитывая, что предпоследним узлом в пост-порядке является T, мы знаем, что дочерний элемент корня должен быть T.

Отсюда мы можем просто проверить оставшиеся 4 возможности:

               A        A    A        A
              /        /      \        \
             T        T        T        T
            / \      / \      / \      / \
           A   T    T   A    A   T    T   A

Inorder     ATTA     TTAA     ATAT     ATTA
Postorder   ATTA     TATA     ATTA     TATA

Итак, единственная возможность:

    A
   /
  T
 / \
A   T

... и это не бинарное дерево поиска.

person Bernhard Barker    schedule 03.11.2013