Vyhledání uzlu v binárním vyhledávací stromu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vyhledání uzlu v binárním vyhledávací stromu – C / C++ – Fórum – Programujte.comVyhledání uzlu v binárním vyhledávací stromu – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
23. 6. 2014   #1
-
0
-

 Ahoj, mohl by mi někdo prosím poradit co mám špatně v tomto C++ kodu? Jde o tu metodu bool search(int), která by měla vzít uživatelem zadané číslo a zjistit zdali strom obsahuje takovýto uzel. Podle toho by měla vracet buď TRUE nebo FALSE. Bohužel při spuštění programu se nic nevrací (program se spustí, žádne chyby se neobjeví, po zadání čísla jakoby ta metoda proběhne až po ten brake ale nevrátí to ani TRUE ani FALSE). Děkuji za pomoc. 

#include <process.h>
#include <conio.h>
#include <iostream>
#include <cstdlib>
using namespace std;

class BinarySearchTree
{
    private:
        struct tree_node
        {
           tree_node* left;
           tree_node* right;
           int data;
        };
        tree_node* root;
    public:
        BinarySearchTree()
        {
           root = NULL;
        }
        void insert(int);
        bool isEmpty() const { return root==NULL; }
        bool search(int);

};

//----------------------------------------------------------
void BinarySearchTree::insert(int d)
{
    tree_node* t = new tree_node;
    tree_node* parent;
    t->data = d;
    t->left = NULL;
    t->right = NULL;
    parent = NULL;
  // is this a new tree?
  if(isEmpty()) root = t;
  else
  {
    //Note: ALL insertions are as leaf nodes
    tree_node* curr;
    curr = root;
    // Find the Node's parent
    while(curr)
    {
        parent = curr;
        if(t->data > curr->data) curr = curr->right;
        else curr = curr->left;
    }
    if(t->data < parent->data)
       parent->left = t;
    else
       parent->right = t;
  }


}

bool BinarySearchTree::search(int d) {
    tree_node* temp = root;
    while (temp != NULL) {
        if (temp->data == d) {
            return true;
        }
        else {
            if (d > temp->data) {
                temp = temp->right;
            }
            else {
                temp = temp->left;
            }
        }
    }
    return false;
}

//----------------------------------------------------------
int main()
{
    BinarySearchTree b;
    int ch,tmp,tmp1;
    while(1)
    {
       cout<<endl<<endl;
       cout<<" Binary Search Tree Operations "<<endl;
       cout<<" ----------------------------- "<<endl;
       cout<<" 1. Insertion/Creation "<<endl;
       cout<<" 2. Does BST contain this number? "<<endl;
       cout<<" 3. Exit "<<endl;
       cout<<" Enter your choice : ";
       cin>>ch;
       switch(ch)
       {
           case 1 : cout<<" Enter Number to be inserted : ";
                    cin>>tmp;
                    b.insert(tmp);
                    break;
           case 2 : cout<<" Enter number to be found : ";
                    cin>>tmp1;
                    b.search(tmp1);
                    break;
           case 3 : system("pause");
                    return 0;
                    break;
       }
    }
}
Nahlásit jako SPAM
IP: 213.226.195.–
p3can
~ Anonymní uživatel
312 příspěvků
23. 6. 2014   #2
-
-1
-
Mimo téma

zda se mne to nebo si zkopirovat kus kodu z netu a ani nejsi schopny ho pouzit ?   

Nahlásit jako SPAM
IP: 77.92.213.–
23. 6. 2014   #3
-
0
-

#2 p3can
lol, děláme to ve škole, jen nevím jak na to

Nahlásit jako SPAM
IP: 213.226.195.–
p3can
~ Anonymní uživatel
312 příspěvků
23. 6. 2014   #4
-
0
-

nemel by sis vypsat vystup z te funkce
b.search(tmp1);

pres cout ?
 

Nahlásit jako SPAM
IP: 77.92.213.–
23. 6. 2014   #5
-
0
-

#4 p3can
lol, errorlevel ...

Nahlásit jako SPAM
IP: 213.226.195.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 61 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý