Pessoal, seguinte, tenho um programa pra fazer aqui que é inserção e a “manutenção” em uma árvore binária, inserção de dados.
até ai tudo bem, implementei as funções básicas e a árovre está sendo montada corretamente, só que eu tenho um a mais nessa história. preciso guardar além do básico no Nó de cada árvore(dado, direita e esquerda), preciso guardar tbm um detalhe que é a quantidade de casos desse determinado dado, ou seja, ao inserir e remover, eu tenho que alterar a quantidade desse dado. oq eu deveria fazer? criar no nó mais um atributo quantidade tudo bem, só que teria que alterar tbm os métodos de inserção e remoção da árvore certo?
segue ai o método de inserção, qualquer ideia é bem vinda…
public boolean inserir(int x) {
root = inserir(x, root);
return true;
}
private No inserir(int x, No t) {
if (t == null)
t = new No(x, null, null);
else if (x < t.info)
t.esquerda = inserir(x, t.esquerda);
else if (x > t.info)
t.direita = inserir(x, t.direita);
return t;
}
Acho que entendi o que vc quer.
Seria pra vc saber quantos sub-nós existem?
Se for isso, vc pode fazer assim na sua classe no:
// coloca a nova variavel que vai armazenar a quantidade de nos.
int quantidade = 0;
public boolean inserir(int x) {
quantidade++; // aqui, para o nó raiz
root = inserir(x, root);
return true;
}
private No inserir(int x, No t) {
if (t == null){
t = new No(x, null, null);
t.quantidade++;// talvez vc não precise desse. Não vi seu contrutor. }
else if (x < t.info){
t.esquerda = inserir(x, t.esquerda);
t.quantidade++;// aqui, para o o sub-nó }
else if (x > t.info) {
t.direita = inserir(x, t.direita);
t.quantidade++;// aqui, para o o sub-nó }
return t;
}
public int getQuantidade() {
return quantidade ;
}
no outro método, para excluir, é só fazer o inverso:
t.quantidade--
Esse é o caminho das pedras.
Árvore B não é o mesmo que árvore binária. Me deram a dica aqui: