Witam, może ktoś pomoże :D wylosowac ciag 30 liczb z przedzialu umieścić je w początkowo pustym dzerwie BST. Sprawdzić (analizując drzewo) czy wśród liczba jest liczba 10, i ewentualnie, w jakiej jest odległości od korzenia. Chodzi mi tutaj o język C++, możliwe jak najprościej.
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Proszę, liczę na NAJ :)
#include <iostream>
#include <ctime>
#include <stdlib.h>
using namespace std;
class element
{
public:
int key,odl;
element *p,*left,*right;
};
class BST
{
public:
BST()
{
ROOT=NULL;
}
element * tree_search(int k)
{
element *a=ROOT;
while (a && k!=a->key)
{
if (k<a->key)
a=a->left; else
a=a->right;
}
if (!a) return NULL; else return a;
}
void wstaw(int g)
{
element *z=new element;
z->key=g;
z->left=NULL;
z->right=NULL;
z->odl=0;
element *y=NULL;
element *x=ROOT;
while (x!=NULL)
{
y=x;
if (z->key<x->key)
x=x->left; else
x=x->right;
z->odl++;
}
z->p=y;
if (y==NULL) ROOT=z; else
if (z->key<y->key)
y->left=z; else
y->right=z;
}
private:
element *ROOT;
};
int main()
{
ios_base::sync_with_stdio(false);
BST drzewko;
srand(time(NULL));
for (int i=0; i<30; i++) drzewko.wstaw(5+(rand()%11));
element *p=drzewko.tree_search(10);
if (p!=NULL) cout << "10 wystepuje w drzewie w odleglosci " << p->odl << " od korzenia!";
else cout << "Niestety nie udalo odnalezc sie 10 w BST";
return 0;
}