2014-10-27 3 views
1

В настоящее время я учащийся, у которого есть задание, касающееся адаптации методов двоичного дерева в методы общего дерева. Мой единственный вопрос: Является ли мой обход после следующего общего дерева правильным? Если это так, то я знаю, что мой алгоритм работает, я просто не могу правильно оценить ход послесловия. Я считаю, что сайт может помочь.Обход обхода для общего дерева

     B 
--------------------|------------------ 
|     |     | 
A    ------D-----   ---I--- 
      |  | |  |  | 
      C  E G  H  L 
         | 
         F 

Мой результат: A C E F G D H L I B

ответ

3

Ваш ответ выглядит правильно для меня.

Этот трюк работает для обобщенного дерева, а не только для двоичных.

Post order traversal

см http://en.wikipedia.org/wiki/Tree_traversal

От http://www.brpreiss.com/books/opus4/html/page259.html

postorder обходных визитах корень последнего. Чтобы сделать постобработку обхода общего дерева:

Проследуйте постобработку каждого из поддеревьев корня один за другим в указанном порядке; а затем посетите корень.

+0

Мой результат ACEFGDHLIB Я сделал диаграмму в посте, не используя диаграмму, исправив Спасибо за проверки ответ Спасибо! – Mjall2

1

Спасибо за графа ты написал в этой статье, но это заставило меня сбивает с толку, потому что это не типичный бинарное дерево. (Некоторые из узлов имеют 3 детей.)

В любом случае, кажется, все.

Как определение wiki для пост-заказа (http://en.wikipedia.org/wiki/Tree_traversal#Post-order), это правильно.

пост-заказ

1.Traverse левого поддерева.

2.Переведите правое поддерево.

  1. Посетите корень.
+0

Благодаря Я понимаю дилемму, я попытался выяснить, что в названии «общее дерево» – Mjall2

0

Postorder печать можно использовать используя рекурсия. вы можете визуализировать себя из функции рекурсии ниже . Узел печатается после возврата обеих функций выше функции print(). Попытайтесь проанализировать свое дерево по коду ниже вручную на бумаге, и вы можете найти, что результат верен. Первоначально визуализация функции рекурсии, подобной этой, была бы сложной, но вы должны быть способны визуализировать себя как хорошего программиста, во всяком случае, попробовать.

void postorder(node) 
{ 
    if(node=NULL) 
     return; 
    postorder(node.left); 
    postorder(node.right); 
    print(node); 
} 
Смежные вопросы