Este projeto é uma implementação simples de uma estrutura de dados de árvore genérica em Java. A representação utilizada é a de "primeiro filho, próximo irmão" (first-child, next-sibling), uma técnica eficiente para armazenar árvores com um número variável de filhos por nó.
O código no arquivo TestaTree.java
monta manualmente a seguinte estrutura de árvore:
Jaspion (A1)
├── Debora (A2)
│ ├── Gustavo (A5)
│ │ └── Cadu (A9)
│ └── Giovanni (A6)
│ └── Artur (A10)
├── Vitoria (A3)
│ ├── Murillo (A7)
│ └── Lucas (A8)
│ ├── Luiz (A11)
│ └── Alisson (A12)
└── Ana (A4)
└── Eduardo (A13)
A árvore é construída com base em três classes:
Node_Tree.java
: Representa um nó da árvore. Cada nó contém:item
: O valor/dado do nó (umaString
).parent
: Uma referência para o nó pai.firstChild
: Uma referência para o seu primeiro filho.next
: Uma referência para o seu próximo irmão (o próximo filho do mesmo pai).
Tree.java
: Representa a árvore como um todo, contendo uma referência para o nó raiz (root
).TestaTree.java
: A classe principal (main
) que instancia os nós, conecta-os para formar a árvore e executa um teste simples.
- Certifique-se de ter o JDK (Java Development Kit) instalado.
- Coloque todos os arquivos (
Node_Tree.java
,Tree.java
,TestaTree.java
) na mesma pasta. - Abra um terminal ou prompt de comando nessa pasta.
- Compile os arquivos Java:
javac *.java
- Execute a classe principal:
java uscs.TestaTree
A saída esperada no console será o nome do nó raiz da árvore.
- Métodos de Manipulação: Implementar métodos para adicionar e remover nós de forma dinâmica.
- Algoritmos de Percurso: Adicionar métodos para percorrer a árvore (ex: pré-ordem, pós-ordem, em ordem).
- Busca: Criar uma função para buscar um item específico na árvore.
- Generalização: Usar Generics (
<T>
) em vez deString
para que a árvore possa armazenar qualquer tipo de dado.