2010-06-03 1 views
-3

Как создать сценарий для:Как создать скрипт дерева c/C++?

сравнить два дерева,

в C/C++ в не рекурсивном режиме?

также

Как создать скрипт в C/C++, чтобы проверить, является ли дерево двоичного кода, в не рекурсивном режиме?

благодарит заранее.

+5

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

+1

Это зависит от того, как вы представляете деревья. – sepp2k

+0

Это функция, которую я должен реализовать в проекте. – Renato

ответ

6

Прежде всего, в C/C++ вы не пишете сценарии. вы пишете программы и компилируете их с помощью компилятора.

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

Проверка того, что дерево является «двоичным», на самом деле не имеет большого значения в C++. В C++ каждый узел двоичного дерева имеет что-то вроде левого указателя и правильного указателя. Чтобы получить двоичное дерево, вам нужно, чтобы ваша структура данных была двоичным деревом.

Если у вас есть общее дерево, в котором может быть любое количество детей, и вы хотите проверить, что каждый узел имеет < = 2 детей, просто перебирайте все узлы, рекурсивно или итеративно и проверьте, что количество детей: < = 2.

0

Чтобы сравнить два бинарных дерева, вы должны посетить (пересечь) каждый узел и сравнить содержимое. Вы также должны сравнить количество узлов (это может быть быстрее, если заголовок дерева имеет переменную, содержащую количество узлов).

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

Поиск в Интернете для некоторых примеров «траверс двоичного дерева». Мне нравятся веб-страницы, отображающие диаграммы и все текстовые. :-)