public ArvoreBinaria<T> retornaArvoreEsquerda(T elemento) { if (estaVazia()) return null; if (this.elemento.compareTo(elemento) == 0) return esquerda; if (elemento.compareTo(this.elemento) < 0) { return esquerda.retornaArvoreEsquerda(elemento); } else { return direita.retornaArvoreEsquerda(elemento); } }
public int retornaAltura() { if (estaVazia()) return -1; Integer alturaDaDireita, alturaDaEsquerda; alturaDaDireita = 1 + direita.retornaAltura(); alturaDaEsquerda = 1 + esquerda.retornaAltura(); if (alturaDaDireita >= alturaDaEsquerda) return alturaDaDireita; return alturaDaEsquerda; }
private void rotacionarParaDireita() { ArvoreBuscaBinariaAVL<T> novaEsquerda, novaDireita = new ArvoreBuscaBinariaAVL<T>(); novaEsquerda = this.esquerda.esquerda; novaDireita.elemento = this.elemento; novaDireita.direita = this.direita; novaDireita.esquerda = this.esquerda.direita; this.elemento = this.esquerda.elemento; this.esquerda = novaEsquerda; this.direita = novaDireita; }
private T removeOMaiorElementoDaArvore(ArvoreBuscaBinariaAVL<T> arvore) { T maiorElemento; if (arvore.ehNodoFolha()) { maiorElemento = arvore.elemento; arvore.esvazie(); return maiorElemento; } if (arvore.direita.elemento != null) return arvore.removeOMaiorElementoDaArvore(arvore.direita); maiorElemento = arvore.elemento; this.remove(arvore.elemento); return maiorElemento; }
private T removeOMenorElementoDaArvore(ArvoreBuscaBinariaAVL<T> arvore) { T menorElemento; if (arvore.ehNodoFolha()) { menorElemento = arvore.elemento; arvore.esvazie(); return menorElemento; } if (arvore.esquerda.elemento != null) return arvore.removeOMenorElementoDaArvore(arvore.esquerda); menorElemento = arvore.elemento; this.remove(arvore.elemento); return menorElemento; }