Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use warnings;
- use strict;
- my $startNode = [0, 0, ""];
- my $height = 0;
- my $width = 0;
- sub insertNode{
- my ($key) = @_;
- print "insert $key\n";
- my @arr = split('', $key);
- my $curNode = $startNode;
- for(my $i = 0; $i<@arr; ++$i){
- if($arr[$i] == 0){
- if($curNode->[0] == 0){
- print "create node with " . substr($key, 0, ($i+1)) . "\n";
- $curNode->[0] = [0, 0, substr($key, 0, ($i+1))];
- }
- $curNode = $curNode->[0];
- }elsif($arr[$i] == 1){
- if($curNode->[1] == 0){
- print "create node with " . substr($key, 0, ($i+1)) . "\n";
- $curNode->[1] = [0, 0, substr($key, 0, ($i+1))];
- }
- $curNode = $curNode->[1];
- }else{
- last;
- }
- }
- }
- sub printTree{
- my ($node) = @_;
- if($node == 0){return};
- print $node->[2] . "\n";
- if($node->[0] != 0){printTree($node->[0])};
- if($node->[1] != 0){printTree($node->[1])};
- }
- # This print function is just for debuging.
- # This function do not format the output in any way
- sub saveTree{
- my ($node, $handle) = @_;
- if($node == 0){return};
- print $handle "$node->[2]\n";
- if($node->[0] != 0){saveTree($node->[0], $handle)};
- if($node->[1] != 0){saveTree($node->[1], $handle)};
- }
- sub loadTree{
- my ($filename) = @_;
- open(INFILE , "<", $filename);
- while(<INFILE>){
- chop;
- insertNode($_);
- }
- close(INFILE);
- }
- print "load files\n";
- loadTree("fu");
- print "\ninsert/overwrite (even if the value is the same atm ;)) new ones\n";
- insertNode("012");
- insertNode("01012");
- insertNode("010112");
- insertNode("10");
- print "\ndo debug print\n";
- printTree($startNode);
- print "\nsave\n";
- open(OUTFILE , ">", "fu");
- saveTree($startNode->[0], *OUTFILE);
- saveTree($startNode->[1], *OUTFILE);
- close(OUTFILE);
Add Comment
Please, Sign In to add comment