Guest User

Untitled

a guest
Nov 21st, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. use warnings;
  2. use strict;
  3.  
  4. my $startNode = [0, 0, ""];
  5. my $height = 0;
  6. my $width = 0;
  7.  
  8. sub insertNode{
  9. my ($key) = @_;
  10.  
  11. print "insert $key\n";
  12.  
  13. my @arr = split('', $key);
  14. my $curNode = $startNode;
  15. for(my $i = 0; $i<@arr; ++$i){
  16. if($arr[$i] == 0){
  17. if($curNode->[0] == 0){
  18. print "create node with " . substr($key, 0, ($i+1)) . "\n";
  19. $curNode->[0] = [0, 0, substr($key, 0, ($i+1))];
  20. }
  21. $curNode = $curNode->[0];
  22. }elsif($arr[$i] == 1){
  23. if($curNode->[1] == 0){
  24. print "create node with " . substr($key, 0, ($i+1)) . "\n";
  25. $curNode->[1] = [0, 0, substr($key, 0, ($i+1))];
  26. }
  27. $curNode = $curNode->[1];
  28. }else{
  29. last;
  30. }
  31. }
  32. }
  33.  
  34. sub printTree{
  35. my ($node) = @_;
  36. if($node == 0){return};
  37. print $node->[2] . "\n";
  38. if($node->[0] != 0){printTree($node->[0])};
  39. if($node->[1] != 0){printTree($node->[1])};
  40. }
  41.  
  42. # This print function is just for debuging.
  43. # This function do not format the output in any way
  44. sub saveTree{
  45. my ($node, $handle) = @_;
  46. if($node == 0){return};
  47. print $handle "$node->[2]\n";
  48. if($node->[0] != 0){saveTree($node->[0], $handle)};
  49. if($node->[1] != 0){saveTree($node->[1], $handle)};
  50. }
  51.  
  52. sub loadTree{
  53. my ($filename) = @_;
  54. open(INFILE , "<", $filename);
  55. while(<INFILE>){
  56. chop;
  57. insertNode($_);
  58. }
  59. close(INFILE);
  60. }
  61.  
  62. print "load files\n";
  63. loadTree("fu");
  64.  
  65.  
  66. print "\ninsert/overwrite (even if the value is the same atm ;)) new ones\n";
  67. insertNode("012");
  68. insertNode("01012");
  69. insertNode("010112");
  70. insertNode("10");
  71.  
  72. print "\ndo debug print\n";
  73. printTree($startNode);
  74.  
  75. print "\nsave\n";
  76. open(OUTFILE , ">", "fu");
  77. saveTree($startNode->[0], *OUTFILE);
  78. saveTree($startNode->[1], *OUTFILE);
  79. close(OUTFILE);
Add Comment
Please, Sign In to add comment