[ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Binary Tree

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26 | 26
Bydlisko: Kesa
NapísalOffline : 10.04.2012 18:06 | Binary Tree

Mám za úlohu vložiť do stromu čísla, aby vyzeral takto:
5
/ \
3 10
/\ \
1 4 16
/ \
13 18
ono je to v podstate jedno, v akom poradí ich tam budem dávať, tak či tak sa mi dajú do tohoto tvaru

Problém je ale v tom, že keď mi príde na prvé porovnávanie, tak do tempu sa mi nedajú hodnoty z konštruktora Node a program logicky spadne, keďže to nemá sčím porovnať. Podľa mňa mám chybu dakde v inserte

Kód:
#include <iostream>

using namespace std;

class Node
{
public:
   int data;
   Node* left,* right;

   Node(int data = -1, Node* left = NULL, Node* right = NULL)
   {
      this->data = data;
      this->left = left;
      this->right = right;
   }
};

class Btree
{
   

public:
   Node* root;
   Btree(Node* root = NULL)
   {
      this->root = root;
   }
   void insert(int value);
};
   

void Btree::insert(int value)
{
   Node* temp = root;

   while(1)
   {
   if(temp->data < value)
   {
      if(temp->left == NULL)
      {
         temp->left = new Node(value);
      }
      else
      {      
         temp = temp->left;
      }
   }

   else
   {
      if(temp->left == NULL)
      {
         temp->right = new Node(value);
      }
      else
      {
         temp = temp->right;
      }
   }
   }
}

int main()
{
   Btree a;
   
   a.insert(1);
   a.insert(3);
   a.insert(5);
   a.insert(4);
   a.insert(10);
   a.insert(18);
   a.insert(13);
   a.insert(16);

   system("pause");
   return 0;
}


_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
Offline

Skúsený užívateľ
Skúsený užívateľ
Binary Tree

Registrovaný: 11.01.09
Prihlásený: 26.11.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 10.04.2012 20:33 | Binary Tree

Kód:
Btree(Node* root = NULL)
{
    this->root = root;
}

///////////////

Node* temp = root;


root je NULL, cize toto:
Kód:
if(temp->data < value)


ti jednoducho musi spadnut. Hod tam nejaku podmienku, napr:
Kód:
if ( root == NULL )
    root = new Node(nejakaHodnotaNarprikladPrva);


Dalsia vec, nemas vyskok z nekonecnej slucky while(1). Skus si to sam poupravovat, ked bude problem, ozvi sa.


Offline

Užívateľ
Užívateľ
Binary Tree

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26 | 26
Bydlisko: Kesa
Napísal autor témyOffline : 10.04.2012 22:04 | Binary Tree

Díky, nevedel som ako vytvoriť ten prvý prvok. Vedel som že ten root je objekt(alebo dačo podobné), že to ešte nemá žiadne konkrétne hodnoty. S triedami ešte len začínam, tak v tom nemám ešte
úplne jasno.
Stým while som ešte nepracoval, ale ked som sa dotoho pustil, tak som tam tú jednotku aj nechal a dal jednoducho return ked mi pridalo hodnotu. Je to podla mna jednoduchsie v tomto prípade, ako
vymýšlať nejaké podmienky
Tu je funkčný kód:

Kód:
void Btree::insert(int value)
{
   Node* temp = root;

      if(root == NULL)
      {
         root = new Node(value);
         return;
      }

   while(1)
   {
      if(temp->data > value)
      {
         if(temp->left == NULL)
         {
            temp->left = new Node(value);
            return;
         }
         else
         {      
            temp = temp->left;
         }
      }

      else
      {
         if(temp->right == NULL)
         {
            temp->right = new Node(value);
            return;
         }
         else
         {
            temp = temp->right;
         }
      }
   }
}


_________________
NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n
 [ Príspevkov: 3 ] 


Binary Tree



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

tree menu

v PHP, ASP

5

565

29.11.2007 20:37

Blackshadow

V tomto fóre nie sú ďalšie neprečítané témy.

Assembler binary

v Assembler, C, C++, Pascal, Java

23

1263

18.04.2012 7:17

Fico

V tomto fóre nie sú ďalšie neprečítané témy.

BMP to binary code

v Ostatné programy

2

734

08.09.2008 15:53

apatka

V tomto fóre nie sú ďalšie neprečítané témy.

[VYRIESENE] String do binary

v PHP, ASP

2

471

07.03.2009 15:57

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

traverse tree in SQL (najlepsie ORACLE <11g>)

v Databázy

0

346

24.10.2012 18:05

masterpeter

V tomto fóre nie sú ďalšie neprečítané témy.

SQL Lite binary file open in PHP

v PHP, ASP

4

414

16.03.2016 8:40

BX



© 2005 - 2024 PCforum, edited by JanoF