я должен решить следующий конструктор для класса BinaryTree в Java:Как создать двоичное дерево из общего дерева?
BinaryTree(GeneralTree<T> aTree)
Этот метод должен создать BinaryTree (Bt) из General дерева (Гт) следующим образом:
Каждая вершина от gt будет представлена в виде листа в bt.
- Если GT является листом, то Ь будет лист с тем же значением, GT
- Если GT не лист, а затем BT будет построен как пустой корень, левый поддерева (л) и правого подтипа (lr). Lt - это строковое двоичное дерево, созданное из самого старого поддерева gt (самое левое поддерево), а lr - это строковое двоичное дерево, созданное из gt без его левого поддерева.
Фристовая часть достаточно тривиальная, но вторая дает мне некоторые проблемы. Я получил это далеко:
public BinaryTree(GeneralTree<T> aTree){
if (aTree.isLeaf()){
root= new BinaryNode<T>(aTree.getRootData());
}else{
root= new BinaryNode<T>(null); // empty root
LinkedList<GeneralTree<T>> childs = aTree.getChilds(); // Childs of the GT are implemented as a LinkedList of SubTrees
child.begin(); //start iteration trough list
BinaryTree<T> lt = new BinaryTree<T>(childs.element(0)); // first element = left-most child
this.addLeftChild(lt);
aTree.DeleteChild(hijos.elemento(0));
BinaryTree<T> lr = new BinaryTree<T>(aTree);
this.addRightChild(lr);
}
}
Это правильный путь? Если нет, можете ли вы придумать лучший способ решить эту проблему? Это решение, например, дает мне кучу узлов без данных вообще, я не знаю, является ли это проблемой самой проблемы или моей.
Спасибо!
Можете ли вы подробно остановиться на «предоставлении мне некоторых проблем»? –
Эй, матовый, спасибо за ответ.Может быть, «Предоставить мне какие-то проблемы», возможно, не лучший способ выразить это? Я просто имел в виду, что я не уверен, что это лучший способ решить проблему. Это лучший способ, который я нашел, но у него есть некоторые проблемы, например, двоичное дерево может закончиться связкой на узлах без данных, и это, я думаю, может быть не так велико? – jlasarte
Является ли узел в GeneralTree разрешенным иметь более двух детей? Если да, то как вы справляетесь с этим в своем b-дереве? –