Metodo parentAninhados

O método parentAninhados tem a função de representar graficamente uma arvore binária através de parênteses como mostra a imagem a seguir:





1 – 4: Método que faz interface entre o usuário e a programação para mostrar uma árvore representada graficamente através dos parentes aninhados.
7: Verifica se o nó raiz passado é ou não nulo.
9: Imprimi na tela o “(” mais o valor do nó.
10: Chama recursivamente o método passando o valor do nó filho da esquerda.
11: Chama recursivamente o método passando o valor do nó filho da direita.
12: Imprimi na tela o “)”.

Metodo arvoreHierarquicaII

O método arvoreHierarquicaII tem a função de representar graficamente uma arvore binária através de uma arvore de hereditária como mostra a imagem a seguir:



1 – 4: Método que faz interface entre o usuário e a programação para mostrar uma árvore representada graficamente através dos arvore hierárquica II.
7: Verifica se o nó raiz passado é ou não nulo.
9: Imprimi a variável space que guarda os espaços em branco dados para a identação da árvore e o valor do nó atual.
10: Acrescenta espaços em branco à variável space.
11: Chama recursivamente o método passando o valor do nó filho da esquerda e os espaços em branco guardados em space.
12: Chama recursivamente o método passando o valor do nó filho da direita e os espaços em branco guardados em space.

Metodo arvoreHierarquicaI

O método arvoreHierarquicaI tem a função de representar graficamente uma arvore binária através de uma arvore de hereditária como mostra a imagem a seguir:



A diferença da imagem para como a arvore será representada no programa é que a árvore estará deitada, ou seja, a raiz da arvore ficará na extrema esquerda e a partir daí a arvore vai crescendo para a direita, ao invés de ser feito de cima para baixo.
1 – 4: Método que faz interface entre o usuário e a programação para mostrar uma árvore representada graficamente através dos arvore hierárquica I.
7: Verifica se o nó raiz passado é ou não nulo.
8: Acrescenta espaços em branco à variável space.
9: Chama recursivamente o método passando o valor do nó filho da direita e os espaços em branco guardados em space.
10: Imprimi na tela os espaços em branco que contem na variável space e o valor do nó.
11: Chama recursivamente o método passando o valor do nó filho da esquerda e os espaços em branco guardados em space.
14: No momento em que sai da condição da linha 7, a variável space recebe o caracter de quebra de linha.

Metodo isEstrBinary

O método isEstrBinary consiste em realizar uma verificação para saber se uma árvore é estritamente binária.
Uma árvore estritamente binária é nomeada dessa forma quando os nós têm ou os dois nós filhos ou não tem nenhum.


1 – 4: Método que faz interface entre o usuário e a programação para saber se uma árvore é ou não estritamente binária.
7: Verifica se o nó raiz passado é ou não nulo.
10: Condição que verifica se os nós filhos da esquerda e direita do nó raiz são nulos.
11: Se a verificação acima for verdadeira então o método retorna true.
12: Uma segunda verificação é realizada para saber se os nós filhos da esquerda e direita do nó raiz são diferente de nulos.
14: Condição for verdadeira então verifica se o lado da esquerda e o lado da direita de toda a árvore são estritamente binários.
15: Se a condição for verdadeira então é retornado true
17: Senão false será retornado20: Se a condição da linha 12 for falsa então é retornado false.

Metodo isFull

Uma árvore binária cheia é aquela em que a raiz e todos os nós internos tem dois nós filhos, portanto o objetivo do método isFull é verificar se uma árvore dada pelo usuário é ou não cheia.



O método que da linha 1 até a 10 é o método que faz a interface com o usuário e o código que verifica se a árvore é ou não cheia.
Nesse método de interface há uma diferença dos demais já apresentados:
Nele verificamos a altura dos dois lados da árvore utilizando o método já apresentado height. Se um lado for maior que o outro então não será necessário fazer o restante da verificação e o próprio método de interface retorna false para o usuário.
Se os dois lados da árvore tiverem o mesmo tamanho então chama-se a função de verificação da árvore.

13: Verifica se o nó raiz passado é ou não nulo
15: Se o nó filho direito e esquerdo forem iguais a nulo então retorna o valor true.
16: Se a condição da linha 15 for verdadeira então o valor true é retornado ao método de interface
17: Senão, é feita uma condição que verifica se a árvore do lado direito e do lado esquerdo são verdadeiros.
20: Caso a condição da linha 17 for verdadeira, então o valor true é retornado.
22: Caso contrario é retornado o valor false.
O valor true é retornado quando os nós filhos esquerdo e direito são nulos porque sabemos que o método chegou até o final da árvore. Se no meio do caminho fosse visto que a árvore não é cheia então o valor retornado é false, pois o método não permite que o restante da árvore seja verificada.

Metodo IsDegenerate


Diz-se que uma árvore é degenerada quando ela tem somente um filho. Um bom exemplo de árvore degenerada que temos são as tão famosas pilhas e listas encadeadas que nos colocaram medo por algum tempo.


123 - 126: Método que faz interface entre o usuário e a “real” programação do método.
282: Verifica se a raiz da árvore não é nula.
284: Verifica se o nó em questão tem dois filhos. Se tiver então a árvore não é degenerada.
285: Se a árvore contiver dois filhos então, nesse momento, a função retorna falso.
286: Senão, verifica se existe nó filho da esquerda.
287: Se tiver filho na esquerda então, chama-se a própria função passando como parâmetro o filho da esquerda.
288: Senão, verifica se existe nó filho da direita.
287: Se tiver filho na direita então, chama-se a própria função passando como parâmetro o filho da direita.
288: Quando nenhuma das condições acima satisfazer, então quer dizer que chegou ao final da árvore, e se até o final da árvore o sistema ainda não retornou falso quer dizer que árvore é degenerada e então retorna true.

Metodo Nos Folhas


Os nós folhas de uma árvore são todos os que não possuem nenhum nó filho.
Para descobrirmos qual são os nós filhos, será necessário certificar que o nó não tem nenhum nó filho.

110 – 113: Método que faz interface entre o usuário e a “real” programação do método.
246: Verifica se a raiz da árvore não é nula.
247: Verifica se o nó não tem filho.
248: Se a condição da linha 237 for verdadeira, então o valor do nó é impresso na tela.
250: Faz a chamada do próprio método passando como parâmetro os nós da esquerda.
251: Faz a chamada do próprio método passando como parâmetro os nós da direita.

Fazendo essas duas chamadas recursivas das linhas 240 e 241, consegue-se percorrer toda a árvore para fazer as devidas verificações e imprimir os nós internos dela.