![]() |
|< 1 ... 7 8 9 10 11 12 13 ... 15 >| | ![]() |
150 Einträge, 15 Seiten |
1
2
3
4
#wenns Links nicht mehr weiter geht, geh rechts weiter
else { if ($zzahl > $$$refvalue {'zahl'}) { ### $$refvalue{'zahl'}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
sub newtree {
######################
# Erstellen des Trees
my $ref_liste1 = shift;
my $zahl = undef;
my $ref_wurzel = undef;
my $refvalue = 0;
for my $zzahl (@$ref_liste1){
# my $refvalue = $ref_wurzel;
if ($zahl)
{ while (1) {
############################
#Beginn des Vergleichs
if($zzahl < $$ref_wurzel{'zahl'}) {
if(defined($$ref_wurzel{'linksweg'}))
{
$refvalue = $$ref_wurzel{'linksweg'}; #erster refvalue passt
}
else {
$$ref_wurzel{'linksweg'} = knot($zzahl);
$zahl = $ref_wurzel; #bleibt auch
last; #Ende
}
}
#wenns Links nicht mehr weiter geht, geh rechts weiter
else { if ($zzahl > $$ref_wurzel {'zahl'}) {
if(defined($$ref_wurzel{'rechtsweg'}))
{
$refvalue = $$ref_wurzel{'rechtsweg'};
}
else {
$$ref_wurzel{'rechtsweg'} = knot($zzahl);
last;
}
}
}
}
}
return($ref_wurzel);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
sub newtree {
######################
# Erstellen des Trees
my $ref_liste1 = shift;
my $knoten = undef;
my $ref_wurzel = undef;
for my $zzahl (@$ref_liste1){
# my $refvalue = $ref_wurzel;
if ($knoten)
{ while (1) {
############################
#Beginn des Vergleichs
if($zzahl < $$knoten{'zahl'}) {
if(defined($$knoten{'linksweg'}))
{
$knoten = $$knoten{'linksweg'};
}
else {
$$knoten{'linksweg'} = knot($zzahl);
$knoten = $ref_wurzel;
last; #Ende
}
}
#wenns Links nicht mehr weiter geht, geh rechts weiter
else { if ($zzahl > $$knoten{'zahl'}) {
if(defined($$knoten{'rechtsweg'}))
{
$knoten =$$knoten{'rechtsweg'};
}
else {
$$knoten{'rechtsweg'} = knot($zzahl);
$konten = $ref_wurzel;
last;
}
else {
$ref_wurzel= knot($zzahl);
$knoten = $ref_wurzel;}
}
}
}
}
return($ref_wurzel);
}
print "$self->{'ref_wurzel'}->{'zahl'}\n";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
sub newtree {
######################
# Erstellen des Trees
my $ref_liste1 = shift;
my $knoten = undef;
my $ref_wurzel = undef;
for my $zzahl (@$ref_liste1){
# my $refvalue = $ref_wurzel;
if ($knoten)
{ while (1) {
if($zzahl < $$knoten{'zahl'}) { #Beginn des Vergleichs
if(defined($$knoten{'linksweg'}))
{
$knoten = $$knoten{'linksweg'};
}
else {
$knoten->{'linksweg'} = knot($zzahl);
$knoten = $ref_wurzel;
last; #Ende
}
}
#wenns Links nicht mehr weiter geht, geh rechts weiter
else { if ($zzahl >= $$knoten{'zahl'}) {
if(defined($knoten->{'rechtsweg'}))
{
$knoten =$$knoten{'rechtsweg'};
}
else {
$$knoten{'rechtsweg'} = knot($zzahl);
$knoten = $ref_wurzel;
last;
}
}
else {
$ref_wurzel= knot($zzahl);
$knoten = $ref_wurzel;}
}
}
}
return $ref_wurzel;
}
1
2
3
4
5
6
7
8
9
10
11
12
sub new {
my $x = shift;
my $class = ref($x) || $x;
my @liste = @_;
my $ref_wurzel = newtree(\@liste);
my $self = {
wurzel => $ref_wurzel,
list => \@liste
};
bless ($self, $class);
return $self;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
package BinTree;
sub new {
my $class = shift;
my $val = shift;
my $self = { val => $val, l => undef, r => undef };
bless $self, ref($class) || $class;
return $self;
}
sub set_l {
my $self = shift;
my $val = shift;
if (ref $self->{l}) {
$self->{l}->append($val);
} else {
$self->{l} = $self->new($val);
}
}
sub set_r {
my $self = shift;
my $val = shift;
if (ref $self->{r}) {
$self->{r}->append($val);
} else {
$self->{r} = $self->new($val);
}
}
sub to_s {
my $self = shift;
my $v = $self->{val};
my $l = ref $self->{l} ? $self->{l}->to_s : undef;
my $r = ref $self->{r} ? $self->{r}->to_s : undef;
return join ', ', grep defined, ($l, $v, $r);
}
sub append {
my $self = shift;
my @vals = @_;
while ( my $n = shift @vals ) {
if ($n < $self->{val}) { $self->set_l($n) }
elsif ($n > $self->{val}) { $self->set_r($n) }
}
}
package main;
my @list = (20, 4, 28, 9, 100, 12, 84, 10, 11);
my $tree = BinTree->new(shift @list);
$tree->append(@list);
print $tree->to_s . "\n" x 2;
print Dumper $tree;
1
2
3
4
5
6
7
sub neu {
my $class = shift;
my $ref_wurzel = newtree(\@liste);
my $self = { val => $ref_wurzel, l => \@liste};
bless $self, ref($class) || $class;
return $self;
}
1
2
3
4
5
6
7
sub new {
my $class = shift;
my $val = shift;
my $self = { val => $val, l => undef, r => undef };
bless $self, ref($class) || $class;
return $self;
}
![]() |
|< 1 ... 7 8 9 10 11 12 13 ... 15 >| | ![]() |
150 Einträge, 15 Seiten |