как найти путь между двумя заданными узлами в двоичном дереве

0
if we have a tree given below:



      1
     / \
    2   3
   / \  / \
  4  5 6  7  

как найти путь между узлами 4-5 или 4-6? Я знаю, как найти путь от корня до заданного узла, но не между двумя случайными узлами.

  • 1
    Если вы задаете вопрос об алгоритмах, то помечайте как таковые (и ни C, ни C ++ не являются подходящими тегами). В противном случае вы должны пометить тегом только язык, который вы компилируете, так как C и C ++ могут сильно отличаться при запросе деталей реализации.
  • 0
    мои сообщения ответили на ваш вопрос? Можете ли вы уточнить, где вас поразили, например, опубликовать некоторый код, чтобы показать, что вы уже пробовали, особенно, как вы идентифицируете свои узлы (как вы находите корневой путь).
Показать ещё 1 комментарий
Теги:
tree
binary-tree

1 ответ

3

вы можете взять два пути от корня к двум узлам и удалить общий подпуть.

         1
        /
       2
      /
     3
   /   \
  4     7
 / \   / \
5   6 8   9

например, для пути от 5 до 9 в примере вы получили бы два пути 1 2 3 4 5 и 1 2 3 7 9 и нашли бы 3 наименьшим общим родительским узлом. затем отмените путь, начиная с 5 до общего родителя, и добавьте остальные в путь к 9: 5 4 + 3 + 7 95 4 3 7 9

  • 0
    Что, если это было не двоичное дерево, а обычное дерево, в котором не числовые значения, а какой-то цвет, похожий на красное черное дерево? @BeyelerStudios
  • 0
    @ShefaliChaudhary такой же подход, пока вы можете искать корневой путь
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню