Exercício 10
Juvenal se perdeu
Juvenal estava fazendo trilhas com um grupo de amigos perto de Pipa. Ele se distraiu com um golfinho saltando para pegar uma borboleta. O seu grupo sumiu e o pobre diabo vagou pela mata por muitas semanas. Até que, um dia, um casal apaixonado que fugira dos pais para viver seu romance encontrou Juvenal.
A aventurada figura havia se tornado quase selvagem e tudo no qual ele pensava era sobreviver em meio àquelas árvores. Ele foi internado em um manicômio e começou a pensar naquele conjunto de raízes, galhos e folhas como estruturas úteis para seus devaneios em busca de frutas já não mais reais.
Juvenal, agora, pede para que você o ajude a tornar aquelas árvores, através da computação, em algo mais tangível. Como o intrépido rapaz enxergava as árvores como estruturas binárias de busca, você deve implementar tais mecanismos que forneçam um número de operações, que um dia ajudaram Juvenal a encontrar os recursos que o salvaram da morte certa.
Formato de Entrada
A árvore binária de busca implementada deve ser tal que para todo nó X, chave[X.esquerda] <= chave[X] < chave[X.direita].
Existem os seguintes comandos que o código deve ser capaz de tratar:
A x // Inserir x
B x // Remover, se existir, o x que estiver mais próximo da raiz da árvore
C x // Imprimir o maior valor da árvore que é menor que x, se não existir imprima 0
PRE // Imprimir a árvore em pré-ordem, caso esteja vazia imprima 0
IN // Imprimir a árvore em order, caso esteja vazia imprima 0
POST // Imprimir a árvore em pós-order, caso esteja vazia imprima 0
Vão existir vários casos. Cada caso começa um 1<=N<=10^5 indicando a quantidade de comandos do caso.
1<=x<=10000
Formato de Saída
Caso k: // onde k é o número do caso (começando de 1)
Exemplos
Entrada:
11
A 5
A 1
A 2
A 6
A 6
C 6
B 2
B 6
PRE
IN
POST
2
C 1
PRE
Saída:
Caso 1:
5
5 1 6
1 5 6
1 6 5
Caso 2:
0
0
//cursor aqui