A Programação de Computadores
Por: kjwoostar • 3/11/2021 • Trabalho acadêmico • 2.110 Palavras (9 Páginas) • 97 Visualizações
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ArvoreSbb;
import Item.Item;
public class ArvoreSbb {
public static int comparar; //para conseguirmos calcular o numero de comparações
private static final byte Horizontal = 0;
private static final byte Vertical = 1;
private No raiz;
private boolean propSBB;
public ArvoreSbb(){
this.raiz = null;
this.propSBB = true;
}
private static class No {
Item reg;
No esq, dir;
byte incE, incD;
}
public No insere(Item reg, No pai, No filho, boolean filhoEsq){ //para inserirmos os valores dentro dos nos das arvores
if(filho == null){
filho = new No();
filho.reg = reg;
filho.incE = Vertical;
filho.incD = Vertical;
filho.esq = null;
filho.dir = null;
if(pai != null)
if(filhoEsq)
pai.incE = Horizontal;
else
pai.incD = Horizontal;
this.propSBB = false;
}
else if(reg.compara (filho.reg) < 0){
filho.esq = insere(reg, filho, filho.esq, true);
if(!this.propSBB)
if(filho.incE == Horizontal){
if(filho.esq.incE == Horizontal){
filho = this.ee(filho);
if(pai != null)
if(filhoEsq)
pai.incE = Horizontal;
else
pai.incD = Horizontal;
}
else if(filho.esq.incD == Horizontal){
filho = this.ed(filho);
if(pai != null)
if(filhoEsq)
pai.incE = Horizontal;
else
pai.incD = Horizontal;
}
}
else
this.propSBB = true;
}
else if(reg.compara(filho.reg) > 0){
filho.dir = insere(reg, filho, filho.dir, false);
if(!this.propSBB)
if(filho.incD == Horizontal){
if(filho.dir.incD == Horizontal){
filho = this.dd(filho);
if(pai !=null)
if(filhoEsq)
pai.incE = Horizontal;
else
pai.incD = Horizontal;
}
else if(filho.dir.incE == Horizontal){
filho = this.de(filho);
if(pai != null)
if(filhoEsq)
pai.incE = Horizontal;
else
pai.incD = Horizontal;
}
}
else
this.propSBB = true;
}
else{
//System.out.println("Erro: Registro ja existente");
this.propSBB = true;
}
return filho;
}
...