-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tree.java
71 lines (65 loc) · 2.22 KB
/
Tree.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package interfaces;
/**
* Interface responsável pelas funções presentes em uma árvore de busca binária.
* Há o uso do generics para que a estrutura possa servir para qualquer tipo ou
* classe.
*
* @param <T> o tipo que terá a árvore.
*
* @author Helder Chaves Leite Junior
*/
public interface Tree<T>
{
/**
* Método que insere um elemento na árvore, de acordo com a sua especificidade
* de inserção.
*
* @param element o elemento a ser inserido no nó da árvore.
* @throws IllegalArgumentException caso o elemento seja de um tipo
* diferente do esperado.
* @throws NullPointerException caso o elemento seja {@code null}.
*/
public void insert(T element);
/**
* Método que remove um elemento da árvore, seguindo sua especificidade de
* remoção.
*
* @param element o elemento do nó a ser removido da árvore.
* @throws IllegalArgumentException caso o elemento seja de um tipo
* diferente do esperado.
* @throws NullPointerException caso o elemento seja {@code null}.
*/
public void remove(T element);
/**
* Método que verifica se uma árvore está vazia, geralmente verificando se
* o nó raíz aponta para null.
*
* @return um booleano {@code true} caso a árvore esteja vazia, ou {@code false}
* caso contrário.
*/
public boolean isEmpty();
/**
* Método que conta o tamanho total da árvore, ou seja, a quantidade de nós
* que a mesma possui até o momento da contagem.
*
* @return um inteiro que representa o tamanho atual da árvore.
*/
public int size();
/**
* Método que calcula a altura máxima da árvore. Se ela estiver vazia, a
* sua altura é -1, caso tenha apenas um elemento a altura é 0, e assim por
* diante.
*
* @return um inteiro que representa a altura máxima da árvore a partir da
* raíz.
*/
public int height();
/**
* Método que conta a quantidade de folhas que a árvore possui. Uma folha
* basicamente é um nó que possui grau 0 (não contém sub-árvores à esquerda
* e/ou à direita).
*
* @return o inteiro que representa o número de folhas que a árvore possui.
*/
public int countLeaves();
}