Salve a tutti, ho scritto questo metodo che dovrebbe controllare se un albero binario è proprio utilizzando la ricorsione. Il problema è che eclipse mi segna come sbagliato il metodo isBst e non capisco perchè.
Eclipse mi dice che: The method isBST(BTPosition<E>) in the type LinkedBinaryTree<E> is not applicable for the arguments (BTPosition<E>)codice:public static <E> boolean isProper(BinaryTree<E> T) throws EmptyTreeException { BTPosition<E> start = (BTPosition<E>) T.root(); if (T.isEmpty()) throw new EmptyTreeException("ERRORE: l'albero è vuoto"); if (T == null) return true; //Un albero vuoto è un albero di ricerca return isBST(start); } private boolean isBST(BTPosition<E> tn) throws InvalidPositionException { Comparator<E> comp = new DefaultComparator<E>(); if (tn.getLeft()==null && tn.getRight()==null) return true; //Se sono foglia sono un albero di ricerca if (tn.getLeft()==null && comp.compare(tn.element(), tn.getRight().element())<0) return true; //Se il sottoalbero sinistro è vuoto e sono piu piccolo del sottoalbero destro sono un BST if (tn.getLeft()==null && comp.compare(tn.element(), tn.getRight().element())>0) return false; //Se il sottoalbero sinistro è vuoto e sono piu grande del sottoalbero destro non sono un BST if (tn.getRight()==null && comp.compare(tn.element(), tn.getLeft().element())>0) return true; //Se il sottoalbero destro è vuoto e sono piu grande del sottoalbero sinistro sono un BST if (tn.getRight()==null && comp.compare(tn.element(), tn.getLeft().element())<0) return false; //Se il sottoalbero destro è vuoto e sono piu piccolo del sottoalbero sinistro non sono un BST if (comp.compare(tn.element(), tn.getLeft().element())<0 || comp.compare(tn.element(), tn.getRight().element())>0) return false; //Se sono piu grande del sottoalbero destro o piu piccolo di quello sinistro non sono un BST return isBST(tn.getLeft()) && isBST(tn.getRight()); //controllo se i miei figli sono bst }
Le soluzioni che mi propone però non risolvono il problema e io inizio a chiedermi dove sto sbagliando... se qualcuno potesse spiegarmelo gliene sarei molto grato![]()

Rispondi quotando
