Olá pessoal
estou com um problema para implementar um código.
na verdade eu preciso saber como funciona o esquema lógico de implematação de um método que dado um nó, o método verifique a altura da árvore (verifiquei que a altura é o "nível máximo de seus nós") e outro método que verifique se uma árvore é binária ou AVL.
como poderia fazer isso de maneira lógica?
queria saber se alguém pode me ajudar.
uma explicação de como funciona está de bom tamanho. fiz uma pesquisa não ahcei nada (talvez não tenha procurado direito).
SEGUE O CÓDIGO QUE FAZ A INSERÇÃO E BUSCA DE UM NÓ EM UMA ÁRVORE BINÁRIA.
public class No {
private int Elem;
private No esq, dir;
public No(int elem){
setElem (elem);
esq = null;
dir = null;
}
public void setElem(int elem){
Elem = elem;
}
public int getElem (){
return (Elem);
}
public void setEsq (No e){
esq = e;
}
public No getEsq (){
return (esq);
}
public void setDir (No d){
dir = d;
}
public No getDir (){
return (dir);
}
}
import javax.swing.*;
public class TarvoreBin {
private No raiz;
public TarvoreBin (){
raiz = null;
}
public boolean arvoreVazia(){
if (raiz == null){
return true;
}
else{
return false;
}
}
public No getRaiz (){
return (raiz);
}
public No criaRaiz(int elem){
No novoNo = new No (elem);
raiz = novoNo;
return (novoNo);
}
public No inserDir (No pai, int elem){
if (! arvoreVazia ()){
if (pai.getDir() !=null){
System.out.println("Filho direito já ocupado");
return null;
}else{
No novoNo = new No (elem);
pai.setDir(novoNo);
return (novoNo);
}
}
return (null);
}
public No inserEsq (No pai, int elem){
if(! arvoreVazia ()){
if(pai.getEsq()!= null){
System.out.println("Filho Esquerdo já ocupado");
return (null);
}else{
No novoNo = new No (elem);
pai.setEsq (novoNo);
return (novoNo);
}
}
return (null);
}
public boolean busca_Abb ( No r, int elem){
int sair = 1;
boolean retorno = false;
while (sair != 4){
if (r.getDir() != null || r.getEsq() != null){
if(elem == r.getElem()){
retorno = true;
}else{
if(elem < r.getElem()){
r = r.getEsq();
if(elem == r.getElem()){
retorno = true;
}
}
if(elem > r.getElem()){
r = r.getDir();
if(elem == r.getElem()){
retorno = true;
}
}
}
}
sair++;
}
if(!retorno){
System.out.println("Numero Nao Achado..");
}else{
System.out.println("Numero ENCONTRADO");
}
return retorno;
}
public void InsereABB(int val){
if (arvoreVazia()){
No novoNo = new No (val);
raiz = novoNo;
}
else InsereNo(raiz, val);
}
private void InsereNo(No r, int v){
if (v < r.getElem()){
if(r.getEsq() == null){
No novoNo = new No (v);
r.setEsq(novoNo);
}
else InsereNo(r.getEsq(), v);
}
else if(v > r.getElem()){
if (r.getDir() == null){
No novoNo = new No (v);
r.setDir(novoNo);
}
else InsereNo(r.getDir(), v);
}
}
import javax.swing.*;
public class Pesquisa {
public static void main(String[] args) {
No no;
TarvoreBin arvore = new TarvoreBin();
int incluiInt = 1;
while( incluiInt != 0){
String inclui = JOptionPane.showInputDialog("Digite os valores \n\n[0] --> para sair");
incluiInt = Integer.parseInt(inclui);
arvore.InsereABB(incluiInt);
}
String busca = JOptionPane.showInputDialog("BUSCA ");
int buscaInt = Integer.parseInt(busca);
arvore.busca_Abb(arvore.getRaiz(), buscaInt);
}
}
Obrigado!