2016-01-25 6 views
-4

Я новичок в datastructure.Я пытаюсь реализовать двоичное дерево, используя Связанный список.Реализация двоичного дерева в java

Мне нужно несколько пояснений при его реализации.

i) Для ввода нового значения в дереве, следует ли нам возвращать назад и обход дерева при его реализации.

ii) Пожалуйста, предложите мне случаи для поиска и удаления значения.

iii) Пожалуйста, предложите мне правильный материал для реализации всех типов деревьев.

+0

Это скорее вопрос, чем Google так вопрос .. – sinclair

+0

@sinclair я не мог получить соответствующие директивы от Google, вот почему я отправил в SO – Yuvi

+0

A LinkedList для дерева не делает что Узел имеет несколько дочерних элементов в дереве, а LinkedList имеет только одну прямую ссылку « –

ответ

1

Ваш связанный список должен показать что-то вроде этого: a->b->c->d->e->f-> ... где ваше дерево будет выглядеть как картинка в конце. где a - корень с левым дочерним элементом b и правым дочерним c. b оставил дочерний элемент d и правый дочерний элемент e, а c имеет только левый дочерний элемент f.

i) вы можете поместить новое значение в конец Связанного списка. Нет необходимости путешествовать по дереву

ii) Я предполагаю, что ваше дерево не будет сортированным двоичным деревом. Итак, для поиска значения k вам нужно пройти через весь Связанный список. это займет O (n) в качестве вашего времени.

Для удаления переменной вы можете удалить узел в Связанном списке, и все будет сдвинуто. так, например, на картинке выше, если вы удаляете d, вы можете увидеть результат на изображении, где f будет заменять d.

iii) Не могли бы вы указать, что вы подразумеваете под всеми типами деревьев?

Надеюсь, это поможет.

Deleting a node

+0

Ваше предложение относительно двоичного дерева через связанный список хорошо, в двоичном дереве здесь нет необходимости знать о левом или правом ребенке. Но мне нужна стандартная процедура для всех типов деревьев, это может быть двоичное дерево поиска, n-арное дерево и т. д. Для примера: рассмотрим двоичное дерево поиска, в котором вставляемые узлы будут разными, если учитывать левые узел и правый узел. Пожалуйста, вы можете предложить мне, как это сделать. я.e Мне нужно обход соединения между родительским и дочерним объектами – Yuvi

+0

Если правый и левый ребенок отличается от другого, то в вашем связанном списке n-й дочерний узел будет дочерним узлом (2n) -го узла, а его левым дочерним элементом будет (2n + 1) -й узел. так что вы можете найти все дочерние узлы. это для двоичного дерева. Вы можете расширить одно и то же до n-арного дерева. например, если это 5-дерево, дети n-го узла будут: 5n-3, 5n-2, 5n-1, 5n и 5n + 1 –

Смежные вопросы