Структура данных дерева Java? [закрыто]

Если вам не нужно сохранять исходный объект, вы можете его закодировать и создать новый массив уникальных значений. В C # используйте Список, чтобы получить доступ к требуемой функциональности. Это не самое привлекательное или интеллектуальное решение, но оно работает.

int[] numbers = new int[] {1,2,3,4,5,1,2,2,2,3,4,5,5,5,5,4,3,2,3,4,5};
List<int> unique = new List<int>();

foreach (int i in numbers)
     if (!unique.Contains(i))
          unique.Add(i);

unique.Sort();
numbers = unique.ToArray();
476
задан CajunLuke 9 August 2012 в 17:36
поделиться

3 ответа

Здесь:

public class Tree<T> {
    private Node<T> root;

    public Tree(T rootData) {
        root = new Node<T>();
        root.data = rootData;
        root.children = new ArrayList<Node<T>>();
    }

    public static class Node<T> {
        private T data;
        private Node<T> parent;
        private List<Node<T>> children;
    }
}

Это базовая древовидная структура, которая может использоваться для String или любого другого объекта. Довольно легко реализовать простые деревья, чтобы делать то, что вам нужно.

Все, что вам нужно добавить, - это методы добавления, удаления, обхода и конструкторы. Узел является основным строительным блоком дерева .

294
ответ дан 22 November 2019 в 22:43
поделиться
public class Tree {
    private List<Tree> leaves = new LinkedList<Tree>();
    private Tree parent = null;
    private String data;

    public Tree(String data, Tree parent) {
        this.data = data;
        this.parent = parent;
    }
}

Очевидно, вы можете добавить служебные методы для добавления / удаления дочерних элементов.

18
ответ дан 22 November 2019 в 22:43
поделиться

На самом деле в JDK реализована довольно хорошая древовидная структура.

Посмотрите на javax.swing.tree, TreeModel и TreeNode. Они предназначены для использования с JTreePanel, но на самом деле это довольно хорошая реализация дерева, и ничто не мешает вам использовать ее без интерфейса swing.

Обратите внимание, что начиная с Java 9 вы можете не использовать эти классы, так как они не будут присутствовать в 'Compact profiles'.

98
ответ дан 22 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: