Hej,
Jeg sidder og leger lidt med Tree::Simple til en simpel kode generator.
Jeg har dog nogen problemer og jeg vil h=F8re om der er nogen der har =20=
erfaringer med 'Tree' moduler og om der er nogen der har nogen =20
anbefalinger.
Problemet er at sammenligningen og inds=E6ttelsen af nye top-noder ikke
=20=
helt virker som jeg gerne vil have denog istedet for at bruger =20
un=F8dvendig energi, s=E5 t=E6nke jeg at listen m=E5ske kunne hj=E6lpe.
Her er min prototype:
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
use Tree::Simple;
my $tree =3D Tree::Simple->new("HEST", Tree::Simple->ROOT);
my @[EMAIL PROTECTED]
=3D qw(1234 1235 2345 2346);
my $oldtree =3D $tree;
foreach my $number (@[EMAIL PROTECTED]
) {
print STDERR "We have number: $number\n";
my @[EMAIL PROTECTED]
=3D split(//, $number, 4);
=09
LOOP1:
for(my $i =3D 0; $i < scalar(@[EMAIL PROTECTED]
); $i++) {
if ($i =3D=3D 0) {
print STDERR "We are resetting to oldtree\n";
$tree =3D $oldtree;
}
=09
my $subtree =3D Tree::Simple->new($digits[$i]);
if (my @[EMAIL PROTECTED]
=3D $tree->getAllChildren()) {
LOOP2: =09
foreach my $child (@[EMAIL PROTECTED]
) { =09=
if ($child->getNodeValue eq =
$subtree->getNodeValue) {
print STDERR "We are resetting =
to child ".$subtree-=20
>getNodeValue."\n";
$subtree =3D $child;
last LOOP2;
=09
} elsif ($child->getNodeValue ne =
$subtree->getNodeValue) { =09
print STDERR "We are adding =
child ".$subtree->getNodeValue."\n";
$tree->addChild($subtree);
last LOOP2;
=09
} else {
print STDERR "We are adding =
sibling ".$subtree->getNodeValue."\n";
$tree->addSibling($subtree);
last LOOP2; =
=09
}
}
} else {
print STDERR "We are adding firstborn =
".$subtree->getNodeValue."\n";
$tree->addChild($subtree);
}
$tree =3D $subtree;
}
}
$tree =3D $oldtree;
$tree->traverse(sub {
my ($_tree) =3D @[EMAIL PROTECTED]
print (("->" x $_tree->getDepth()), $_tree->getNodeValue(), =
"\n");
});
Her er outputtet:
1
->2
->->3
->->->4
->->->5
2
->3
->->4
->->->5
2
->3
->->4
->->->6
Ville gerne have det var:
1
->2
->->3
->->->4
->->->5
2
->3
->->4
->->->5
->->->6
jonasbn


|