Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Seriale turcesti/coreene online H...

Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...
 switch microtik

Permis categoria B la 17 ani

Sfaturi pentru pregatirea de eval...

Crapaturi placa
 cum imi accesez dosarul electroni...

Momentul Aprilie 1964

Sursa noua - zgomot ?

A fost lansat Ubuntu 24.04 LTS
 Pareri apartament in zona Berceni?

Free streaming SkyShowtime de la ...

Skoda Fabia 1.0 TSI (110 CP)- 19 ...

Mezina familiei, Merida BigNine
 

AVL- help

- - - - -
  • Please log in to reply
2 replies to this topic

#1
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014
Trebuie sa implementez avl si am o mica problema, nu prea da.Ca sa testez daca e AVL am facut parcurgerile RSD si SRD(asta da corecta pt ca in particular e abc) dar RSD nu da bine ....(pt ca nu cred ca am facut ceva bine)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
struct nod
{
	int bal,info,contor;
	nod *stanga;
	nod *dreapta;
};
void inserare(nod *&rad,int x,bool h)
{
	if(rad==NULL)
	{
		rad=new nod;
		rad->info=x;
		rad->stanga=NULL;
		rad->dreapta=NULL;
		rad->bal=0;
		h=true;
	}
	else if(x<rad->info) //merg in stanga
	{
		inserare(rad->stanga,x,h);
		if(h==true)
			switch(rad->bal)
			{
			case 1:
			{
				rad->bal=0;
				h=false;
			}
			break;
			case 0:
			{
				rad->bal=-1;
			}
			break;
			case -1:
			{
				nod *q=rad->stanga;
				if(q->bal==-1) //rotatie SS
				{
					rad->stanga=q->dreapta;
					q->dreapta=rad;
					rad->bal=0;
					rad=q;
				}
				else //SD
				{
					nod *r=q->dreapta;
					q->dreapta=r->stanga;
					r->stanga=q;
					rad->stanga=r->dreapta;
					r->dreapta=rad;
					if(r->bal==-1) //s-a inserat pe stanga
					{
						q->bal=0;
						rad->bal=1;
					}
					else   //s-a inserat pe dreapta
					{
						q->bal=-1;
						rad->bal=0;
					}
					rad=r; //setarea radacinii
				}
				rad->bal=0;
				h=false;
			}
			break;
			}
	}
	else if(x>rad->info)
	{
		inserare(rad->dreapta,x,h);
		if(h==true)

			switch(rad->bal)
			{
			case -1:
			{
				rad->bal=0;
				h=false;
			}
			break;
			case 0:
			{
				rad->bal=1;
			}
			break;
			case 1:
			{
				nod *q=rad->dreapta;
				if(q->bal==1) //rotatie DD
				{
					rad->dreapta=q->stanga;
					q->stanga=rad;
					rad->bal=0;
					rad=q;
				}
				else //DS
				{
					nod *r=q->stanga;
					q->stanga=r->dreapta;
					r->dreapta=q;
					rad->dreapta=r->stanga;
					r->stanga=rad;
					if(r->bal==1) //s-a inserat pe stanga
					{
						rad->bal=-1;
						q->bal=0;
					}
					else  //s-a inserat pe dreapta
					{
						q->bal=1;
						rad->bal=0;
					}
					rad=r;
				}
				rad->bal=0;
				h=false;
			}
			break;
			}
	}
	else
	{
		rad->contor+=1;
		h=false;
	}
}
void SRD(nod *rad)
{
	if(rad!=NULL)
	{
		SRD(rad->stanga);
		cout<<rad->info<<" ";
		SRD(rad->dreapta);
	}
}
void RSD(nod *rad)
{
	if(rad!=NULL)
	{
		cout<<rad->info<<" ";
		RSD(rad->stanga);
		RSD(rad->dreapta);
	}
}
int main()
{
	nod *rad=NULL;
	int x;
	bool h=0;
	while(f>>x)
	{
		inserare(rad,x,h);
	}
	cout<<"SRD: ";
	SRD(rad);
	cout<<endl;
	cout<<"RSD: ";
	RSD(rad);
	return 0;
}



#2
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014
am gasit trebuia &h, dar dupa ce pun &h da crash programul...
fara &h pur si simplu face abc

va rog daca e dispus cineva

#3
jdavyd

jdavyd

    Member

  • Grup: Members
  • Posts: 323
  • Înscris: 24.07.2014
Acum am vazut ca nu e postat unde treebuie, daca poate cineva sa l mute.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate