Объединить два дерева(вопрос по теории) (Java. Объединить два Jtree.)

Модератор: Модераторы разделов

Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Объединить два дерева(вопрос по теории)

Сообщение zshgm »

Java. Собственно сабж по теории: есть два экземпляра класса Jtree(назову деревом). Структура очень похожая. root'овый элемент одинаковый. Например

Дерево 1:
...root
...|__a
...|__i
......|__c
.........|__y
...|__h

Дерево 2:
...root
...|__a
......|__t
...|__i
......|__c
......|__u
...|__h

Нужно получить полное дерево объединяющее все элементы первых двух:
Дерево 3:
...root
...|__a
......|__t
...|__i
......|__c
.........|__y
......|__u
...|__h

Существуют ли алгоритм для получения такого вот "полного" дерева?
Если существует расскажите пжлста :)
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Re: Объединить два дерева(вопрос по теории)

Сообщение zshgm »

видимо в алгоритмах никто не силен :(
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 482

Re: Объединить два дерева(вопрос по теории)

Сообщение Женя Подсыпальников »

zshgm писал(а):
30.08.2009 15:20
Существуют ли алгоритм для получения такого вот "полного" дерева?
Если существует расскажите пжлста :)


Отведи свой класс от этого,
добавь метод Merge(const JTree& jTree),

который, перебирая элементы в переданном jTree,
пробует найти аналог (учитывая родителя, начиная с корня) в себе
и - по неуспеху - вставляет... :)

(Только то будет изменённое вызывающее дерево, а не новое третье.
Чтобы создать третье, треба сначала аллокировать копию первого
да провести объединение (Merge(..)) её со вторым...)
Пойдём на рыбалку !
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Объединить два дерева(вопрос по теории)

Сообщение Crazy »

Раз по теории, тогда читай Рейнгольд Комбинаторные алгоритмы

Desipere in loco
Спасибо сказали:
Аватара пользователя
zshgm
Сообщения: 311
ОС: Debian

Re: Объединить два дерева(вопрос по теории)

Сообщение zshgm »

Crazy писал(а):
31.08.2009 15:44
Раз по теории, тогда читай Рейнгольд Комбинаторные алгоритмы


Не нашел там объединение деревьев... вы сами то ее читали? :) Там дофига описания алгоритмов, но конкретно про объединение двух деревьев по принципу который я описал - нету.

Женя Подсыпальников писал(а):
31.08.2009 15:39
zshgm писал(а):
30.08.2009 15:20
Существуют ли алгоритм для получения такого вот "полного" дерева?
Если существует расскажите пжлста :)


Отведи свой класс от этого,
добавь метод Merge(const JTree& jTree),

который, перебирая элементы в переданном jTree,
пробует найти аналог (учитывая родителя, начиная с корня) в себе
и - по неуспеху - вставляет... :)

(Только то будет изменённое вызывающее дерево, а не новое третье.
Чтобы создать третье, треба сначала аллокировать копию первого
да провести объединение (Merge(..)) её со вторым...)



Спасибо! думаю то что нужно! если получится отпишусь :)
newblog.kz - заработай на своих статьях :)
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Объединить два дерева(вопрос по теории)

Сообщение Crazy »

zshgm писал(а):
01.09.2009 09:31
Crazy писал(а):
31.08.2009 15:44
Раз по теории, тогда читай Рейнгольд Комбинаторные алгоритмы


Не нашел там объединение деревьев... вы сами то ее читали? :) Там дофига описания алгоритмов, но конкретно про объединение двух деревьев по принципу который я описал - нету.


Сам читал и другим советую. Что бы решить падобную задачу, нужно написать математическую модель.

Desipere in loco
Спасибо сказали: