ABPesquisa Ajuda precisa-se

3 respostas
D

Alo pessoal,

8O

Preciso de uma ajuda. Estou a criar uma arvore binaria de pesquisa. Acontece é q a partir da arvore eu tenho que procurar uma palavra, apagar automaticamente palavras q se repetem mais de 15 vezes(com a informação de qual), e esta ficando complicado. A arvore já feita esta desta forma:

public class ABPesq { 
    
     private  String newVal; 
     private BSTNode p ; 
    
    /** Creates a new instance of ABPesq */ 
    public ABPesq() { 
    } 
    
    
      BSTNode root = null; 
    
    public void insert(String newVal) { 
        if (root == null) { 
            root = new BSTNode(newVal); 
            
        } 
        else { 
            BSTNode p = root; 

            while (p != null) { 
                
                int compared = newVal.compareToIgnoreCase(p.info); 
        

                if (compared == 0) { 
                    p.count++; 
                    break; 
                } 
                else if (compared < 0) { 
                    if (p.left == null) { 
                        p.left = new BSTNode(newVal); 
                        break; 
                    } 
                    else { 
                        p = p.left; 
                    } 
                } 
                else { 
                    if (p.right == null) { 
                        p.right = new BSTNode(newVal); 
                        break; 
                    } 
                    else { 
                        p = p.right; 
                    } 
                } 
                                if (newVal.equals(p.info)) 
                                     { 
                                         p.count+=1; 
                                System.out.println(p.info+"("+p.count+")"); 
                                return; 
                                             } 

                                                          
              if (newVal.equals(p.info)) { 
                p.count+=1; 
            if( p.count > 15 ){ 
                             System.out.println("A palavra "+p.info+ "  foi repetida  ("+p.count+") vezes");//saida 
            
            } 
    
    return ; 
    } 
                
            } 
        } 
                    
    } 

    class BSTNode{ 
        
        
    final String info; 
    int count = 1; 
    BSTNode left; 
    BSTNode right; 
    
    public BSTNode(String newVal) 
    { 
        this.info = newVal; 
          
    }    
}

Ainda assim esta class apresenta alguns erros tal com a repitição das palavras quantas vezes elas existam em vez de informar apenas q a palvra repete-se x vezes. Alguma ajuda para implementar as outra funções serão bem vindas

:roll:
Aquele abraço

Jose
Moçambique

3 Respostas

S

Meu nem vi mto seu código, mas uma opnião.

Porque quando vc nao monta a arvore, vc nao coloca uma estrutura que é a palavra e um integer, esse integer é incrementado sempre que a palavra é inserida, aí se for igual a 15 vc já nem inseremais, assim sua árvore tem apenas 1 entrada para cada palavra e o numero de vezes que ela aparece.
Mas se precisa deixar na arvore a palavra mesmo, sempre que ela é inserida, coloca na raiz da arvore o numero de vezes que ela aparece e ai insere a palavra na arvore, e incrementa na raiz, quando for 15 você ja nem insere mais.

talvez isso ajude um pouco

D

Já tentei mas esta difícil… sera q da para dar uma ajuda??? :?

D

:? :? :? :? 8O

Criado 17 de maio de 2004
Ultima resposta 18 de mai. de 2004
Respostas 3
Participantes 2