2013-03-15 7 views
-2

Как Свести дерево (заказовМой обходе) для следующей структуры дерева: https://gist.github.com/damadamdam/7b6364220b11871f2930Симметричного Traversal дерева

Моего ожидаемого ответа также прилагаются с сутью.

+2

В чем вопрос? – Reimeus

+0

Есть 2 вопроса: 1) Как работает вышеуказанный код? 2) Что такое код для выравнивания дерева? –

+1

Здесь не так. Попробуйте что-нибудь, и если у вас есть проблема, покажите нам, что вы пытаетесь и объясните возникшую проблему. Мы не будем делать домашнее задание. –

ответ

1

Either содержит поле типа A или поле типа B, но оба они оба. Вы можете передать функцию в свой метод ifLeft(), который будет вызываться только в том случае, если он содержит A. И вы можете передать функцию в свой метод ifRight(), который будет вызываться, если он содержит B. SO, если вы вызываете оба метода: один и только функции будут вызываться.

Функция - это просто интерфейс, который вы можете реализовать, и который превращает что-то в нечто другое.

A Tree - это либо один элемент, либо тройной из трех деревьев (являющийся либо элементом, либо тройным из трех деревьев и т. Д.), Образуя рекурсивную структуру данных.

И тройка имеет левый, средний и правый элементы.

Чтобы пройти по дереву, вы должны проверить, содержит ли он один элемент или тройной. Если это один элемент, обход завершен. Если это Тройка, то вы должны пересечь ее левое дерево, его среднее дерево и его правое дерево.

+0

Спасибо за быстрый ответ! Я написал обход и отредактировал его в вопросе, можете ли вы подтвердить, если мой код верен из моего понимания вашего ответа. –

+0

Это экзамен на сдачу экзамена? –

+0

Ваш код не компилируется, он не соблюдает соглашения об именах Java, и он забывает средний элемент, но он кажется логически правильным для меня. Вы действительно не используете функциональный дизайн ifLeft() и ifRight(). Я бы создал две функции: одну для применения к дереву листьев, а другую - к дереву узлов. –