Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
Con Midnight, Blizzard tenta il colpaccio: il player housing sbarca finalmente su Azeroth insieme a una Quel'Thalas ricostruita da zero. Tra il dramma della famiglia Ventolesto e il nuovo Prey System, ecco com'è la nuova espansione di World of Warcraft
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-03-2008, 14:20   #1
morskott
Member
 
Iscritto dal: Jul 2005
Messaggi: 291
[JAVA] AVL

Non so se è permessa una domanda del genere, ma il codice dell'avl che ho scritto
Codice:
class AVLElement <T extends Comparable>{
	T info;
	AVLElement dx;
	AVLElement sx;
	AVLElement parent;
	int prof;
}
public class AVL <T extends Comparable>{
	private AVLElement<T> root;
	private int numElem;
	
	public AVL(){
		this.numElem=0;
	}
	
	public boolean add(T elem){
		if (root==null){
			AVLElement<T> avlelem=new AVLElement<T>();
			avlelem.info=elem;
			this.root=avlelem;
			this.numElem++;
			return true;
		}else{
			boolean ins=insert(elem,this.root,1);
			if (!ins) return false;
			this.numElem++;
			return true;
		}
	}
	
	private void rotDX(AVLElement<T> elem){
		AVLElement<T> parent=elem.parent;
		AVLElement<T> b=elem;
		AVLElement<T> a=elem.sx;
		AVLElement<T> s1=a.sx;
		AVLElement<T> s2=a.dx;
		AVLElement<T> s3=b.dx;
		if (elem.equals(elem.parent.sx)){
			parent.sx=a;
		}else{
			parent.dx=a:
		}
		a.sx=s1;
		s1.parent=a;
		a.dx=b;
		b.parent=a;
		b.sx=s2;
		s2.parent=b;
		b.dx=s3;
		s3.parent=b;
		a.parent=parent;
	}
	
	private void rotSX(AVLElement<T> elem){
		AVLElement<T> parent=elem.parent;
		AVLElement<T> a=elem;
		AVLElement<T> b=a.dx;
		AVLElement<T> s1=a.sx;
		AVLElement<T> s2=b.sx;
		AVLElement<T> s3=b.dx;
		if (elem.equals(elem.parent.sx)){
			parent.sx=b;
		}else{
			parent.dx=b:
		}
		a.sx=s1;
		s1.parent=a;
		a.dx=s2;
		s2.parent=a;
		b.sx=a;
		a.parent=b;
		b.dx=s3;
		s3.parent=b;
		b.parent=parent;
	}
	
	private void rotSXDX(AVLElement<T> elem){
		rotSX(elem.sx);
		rotDX(elem);
	}
	
	private void rotDXSX(AVLElement<T> elem){
		rotDX(elem.dx);
		rotSX(elem);
	}
	
	private void checkBalance(AVLElement<T> elem){
		int balanceIndex= balanceIndex(elem);
		if (balanceIndex==2){
			int bisx=balanceIndex(elem.sx);
			if (bisx==1 || bisx==0){
				rotSX(elem);
			}
			if (bisx==-1){
				rotDXSX(elem);
			}
		}
		if (balanceIndex==-2){
			int bidx=balanceIndex(elem.dx);
			if (bidx==-1 || bidx==0){
				rotDX(elem)
			}
			if (bidx==1){
				rotSXDX(elem);
			}
		}
	}
	
	private int balanceIndex(AVLElement<T> elem){
		return profondita(elem.sx)-profondita(elem.dx);
	}
	
	private int profondita(AVLElement<T> elem){
		if (elem==null) return 0;
		int profDX=profondita(elem.dx);
		int profSX=profondita(elem.sx);
		if (profDX>=profSX){
			return profDX+1;
		}else{
			return profSX+1;
		}
	}
	
	private boolean insert(T elem,AVLElement father,int deep){
		if (father.info.equals(elem)) return false;
		if (elem.compareTo(father.info)<0){
			//inserisci a SX
			if (father.sx==null){
				AVLElement<T> avlelem=new AVLElement<T>();
				avlelem.info=elem;
				avlelem.prof=deep;
				avelem.parent=father;
				father.sx=avlelem;
				return true;
			}else{
				boolean ret= insert(elem,father.sx,deep+1);
				if (!ret) return false;
				checkBalance(father);
				return ret;
			}
		}else{
		//inserisci a DX
			if (father.dx==null){
				AVLElement<T> avlelem=new AVLElement<T>();
				avlelem.info=elem;
				avlelem.prof=deep;
				avelem.parent=father;
				father.dx=avlelem;
				return true;
			}else{
				boolean ret= insert(elem,father.dx,deep+1);
				if (!ret) return false;
				checkBalance(father);
				return ret;
			}
		}
	}

	
	public void remove(T elem){
		AVLElement<T> temp=this.root;
		this.root=null;
		this.numElem=0;
		insertAll(temp,elem);
	}
	
	public void insertAll(AVLElement<T> elem,T info){
		if (elem==null) return;
		if (!elem.info.equals(info))this.add(elem.info);
		insertAll(elem.sx,info);
		insertAll(elem.dx,info);
	}
	
	public boolean contains(T elem){
		return contains(this.root,elem);
	}
	
	public boolean contains(AVLElement<T> elem,T info{
		if (elem==null) return false;
		if (elem.info.equals(info)) return true;
		if (info.compareTo(elem.info)<0) return contains(elem.sx,info);
		return contains(elem.dx,info);
	}
}
è giusto?? Soprattutto l'inserimento, che so che al delete ho scritto la peggio cosa possibile (funziona, ma è di costo non minimo)
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB
morskott è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Insta360 presenta Snap, lo schermo selfi...
Razer Kishi V2 a soli 59,99€ su Amazon: ...
Dallo scantinato di Jobs al NeXT: apre l...
Trasformare il PC in una workstation AI ...
ECOVACS DEEBOT T80 OMNI a soli 499€: il ...
Gli iPhone e i mid-range Samsung guidano...
Maxi offerte Amazon sui grandi elettrodo...
Intel continuerà a produrre Rapto...
Sky Wifi potenzia la copertura: nuovo ac...
Il chiplet GaN più sottile al mon...
Galaxy S26 a 929€ con Galaxy Watch 8 in ...
Tineco FLOOR ONE S9 Scientist: la nuova ...
IBM porta il quantum computing nella chi...
Google AI Overviews sbaglia poco, ma tan...
Il futuro iPhone Fold ha un nome: Apple ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:30.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v