[ED233] Árvores na Terra dos Dados

Neste problema deverá apenas submeter uma classe BTree<T> (e não um programa completo).


[SUBMISSÃO PARA AVALIAÇÃO] Este problema está disponível para submissão a contar para avaliação até às 23:59 do dia 30 de Maio. Não deixe de ler as instruções para submissão.


Código Base

O código base são as classes de árvores binárias dadas nas aulas. Pode fazer download de um único ficheiro zip contendo todos os códigos-fonte (ficheiros .java) necessários. Use como base a classe BTree<T>, que é a única que deverá submeter.

Problema

As árvores são das mais antigas criaturas da Terra dos Dados, conhecidas por serem defensoras das florestas e do mundo livre, combatendo ferozmente o cruel Senhor das Trevas e da Ineficiência. A espécie mais conhecida destas criaturas é a árvore binária, que precisa da tua ajuda para aumentar o seu poder com novos métodos.

Métodos a Implementar

Deve acrescentar à classe BTree dada os seguintes métodos (não modificando nenhum dos métodos já existentes no código base):

Notas

 

Exemplos de Input/Output para o método internal

Os 3 primeiros exemplos correspondem às três árvores da figura.

Árvore t em preorder Valor devolvido por t.internal()
6 3 2 N N 5 N N 10 N 25 N N 3
6 3 2 N N N 10 N N 2
6 3 N N 10 N N 1
6 N N 0
N 0

 

Exemplos de Input/Output para o método cut

A árvore em todos os exemplos corresponde à árvore da figura.

Árvore t em preorder   Chamada   Estado da árvore depois da chamada, em preorder (com nulls)
6 3 2 1 N N N 5 N 7 N N 10 8 N 9 N N 25 N N t.cut(3) 6 3 2 N N 5 N N 10 8 N N 25 N N
6 3 2 1 N N N 5 N 7 N N 10 8 N 9 N N 25 N N t.cut(2) 6 3 N N 10 N N
6 3 2 1 N N N 5 N 7 N N 10 8 N 9 N N 25 N N t.cut(1) 6 N N
6 3 2 1 N N N 5 N 7 N N 10 8 N 9 N N 25 N N t.cut(0) N
6 3 2 1 N N N 5 N 7 N N 10 8 N 9 N N 25 N N t.cut(-1) N
6 3 2 1 N N N 5 N 7 N N 10 8 N 9 N N 25 N N t.cut(42) 6 3 2 1 N N N 5 N 7 N N 10 8 N 9 N N 25 N N

 

Exemplos de Input/Output para o método maxLevel

Os 4 primeiros exemplos correspondem às quatro árvores da figura.

Árvore t em preorder Array devolvido por t.maxLevel()
6 3 2 1 N N N 5 N 7 N N 10 8 N 9 N N 25 N N [4,1]
6 3 2 N N 5 N N 10 N N [2,2]
6 3 N 5 N 7 N N 10 8 N 9 N N 25 N N [3,1]
6 3 2 1 N N N N N [1,4]
42 N N [1,1]