#!c:/perl use strict; use warnings; my @liste1 = (); my @liste2 = (4, 28, 9, 100, 12, 84, 10, 11); sub knot { return ( { 'zahl' => $_[0], 'linksweg' => undef, 'rechtsweg' => undef } ); } sub newtree { ############################ #Eingabe der ersten 10 Zahlen ############################ for(0..9){ print "Bitte geben Sie eine Zahlen ein: "; my $eingabe = ; chomp($eingabe); push @liste1,$eingabe; } print "Sie haben folgende Zahlen eingegeben: (@liste1) \n"; ###################### # Erstellen des Trees ###################### my $ref_liste1 = shift; my $zahl = shift(@$ref_liste1); #Wurzel wird mit erster Zahl der Liste1 erstellt my $ref_wurzel = knot($zahl); for $zahl (@$ref_liste1){ my $refvalue = $ref_wurzel; if ($zahl) { while { ############################ #Beginn des Vergleichs if($zahl < $$refvalue{'zahl'}) { if(defined($$refvalue{'linksweg'})) { $refvalue = $$refvalue{'linksweg'}; } else { $$refvalue{'linksweg'} = knot($zahl); last; #Ende } } ####### #wenns Links nicht mehr weiter geht, geh rechts weiter else { if(defined($$refvalue{'rechtsweg'})) { $refvalue = $$refvalue{'rechtsweg'}; } else { $$refvalue{'rechtsweg'} = knot($zahl); last; } } }}} return($ref_wurzel); } ######## #Hauptprogramm ######## ################### #Ausgabe des Trees #### sub ausgabe { my $refvalue = shift; my $self = shift; if(defined($self->{'ref_wurzel'}->{'linksweg'}})) { ausgabe($$refvalue{'linksweg'}) } print "$self->{'ref_wurzel'}->{'zahl'}\n"; if(defined($self->{'ref_wurzel'}->{'rechtsweg'})) { ausgabe($$refvalue{'rechtsweg'}) } } ausgabe($ref_wurzel); sub new { my $class = shift; my $self = {}; bless( $self, $class ); my @liste = @_; $self->{'ref_wurzel'} = newtree (\@liste); return $self; } ############### #Hinzufügen weiterer Äste ############### sub hinzufuegen { my $self = shift; my @newList = my @liste2;