OrderedKAryTree отображается неправильно (JUNG2)

Я работал над графическим отображением операций AVL Tree с использованием JUNG2 (без анимации).

Я использую OrderedKAryTree для того же. Но есть некоторые проблемы с рендерингом. Все ребра появляются от корня до верхнего левого угла кадра. Как показано на этом снимке экрана

Вот мой код визуализатора

        vv = new VisualizationViewer<Integer, Integer>(
            new TreeLayout<Integer, Integer>(graph),
            new Dimension(500, 400));
        vv.setBackground(Color.white);
        vv.getRenderContext().setEdgeShapeTransformer(
            new EdgeShape.Line<Integer, Integer>());
        vv.getRenderContext().setVertexLabelTransformer(
            new ToStringLabeller<Integer>());

        frame.getContentPane().add(vv, BorderLayout.CENTER);
        frame.getContentPane().validate();

Я не смог понять, почему это происходит. Кроме того, тот же код отлично работает, если я использую DelegateTree, хотя порядок не достигается.

Пожалуйста помоги. Заранее спасибо!


person SPatil    schedule 04.01.2014    source источник


Ответы (1)


Узнал решение. Вместо OrderedKAryTree используйте DelegateTree с DirectedOrderedSparceGraph

Вот как должен быть инициализирован граф:

DelegateTree<V, E> graph = new DelegateTree<V, E>(
    new DirectedOrderedSparseMultigraph<V, E>());

V и E могут быть любыми Object.

Это не решает проблему неправильного отображения OrderedKAryTree, но, безусловно, может помочь вам отобразить двоичное дерево поиска.

person SPatil    schedule 05.01.2014
comment
Так вы говорите, что единственное изменение, которое вы сделали, это замена реализации графа? Пожалуйста, уточните, так как это кажется неправдоподобным, исходя из того, как работают классы. - person Joshua O'Madadhain; 05.01.2014
comment
Да, это единственное, что я изменил. На самом деле вы можете использовать DelegateTree вместо OrderedKAryTree, потому что оба реализуют интерфейс Forest, Graph и Tree. Конечно, их реализация отличается, чего нет у DelegateTree, так это ограничения на количество дочерних элементов узла, о котором мне пришлось позаботиться в своем коде. - person SPatil; 09.01.2014