Структура данных Java Tree String - PullRequest
1 голос
/ 16 января 2012

Как я могу представить древовидную структуру, как показано ниже, в java?

    "root"
     |  |
"leaf1" "leaf2"
         |   |
    "leaf3" "leaf4"
       |
    "leaf5"

Существуют ли какие-либо встроенные или пользовательские классы, на которые кто-нибудь может отослать меня?

РЕДАКТИРОВАТЬ: Мне нужночтобы можно было легко перемещаться по узлам.

Ответы [ 5 ]

3 голосов
/ 16 января 2012

В библиотеках классов Java или в коллекциях Guava или Apache Commons нет общего типа дерева.

Самое простое решение - реализовать тип дерева самостоятельно, чтобы сделать именно то, что вам нужно.Основная функциональность дерева тривиальна ... по модулю, что детали сильно зависят от того, что дерево должно содержать и как ваш сценарий использования требует его поведения.

(Если вы хотите понять, почему существуетнет общего типа дерева, попробуйте разобраться с этой проблемой Гуавы - http://code.google.com/p/guava-libraries/issues/detail?id=174)

1 голос
/ 23 января 2018

Возможно, он не является частью Collections API, но JTree Swing TreeModel, безусловно, является реализацией общего дерева: https://docs.oracle.com/javase/7/docs/api/javax/swing/tree/TreeModel.html

1 голос
/ 18 мая 2012

Попробуйте это [очень общее, хотя]:

public class Tree {
private Node root;

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

private class Node {
    private String data;
    private Node parent;
    private List<Node> children;
}
}
1 голос
/ 16 января 2012

Ниже приведено простое двоичное дерево, которое решит вашу задачу.

http://www.java2s.com/Code/Java/Collections-Data-Structure/BinaryTree.htm

0 голосов
/ 16 января 2012

Просто создайте свой собственный класс Node:

Node {
 T value;
 Node left;
 Node right;
}

Для более сложной реализации см. N-арное дерево Java DefaultMutableTreeNode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...