Example #1
0
 public static function encode($s, $t)
 {
     if (!$t->root) {
         return;
     }
     // Encode the tree first.
     $allBits = Huffman::encodeTree($t);
     for ($i = 0; $i < strlen($s); ++$i) {
         $c = $s[$i];
         $current = $t->leaves[$c];
         $bits = array();
         while (true) {
             $parent = $current->parent;
             if (!$parent) {
                 break;
             }
             if ($current === $parent->left) {
                 array_push($bits, 0);
             } else {
                 array_push($bits, 1);
             }
             $current = $parent;
         }
         $allBits = array_merge($allBits, array_reverse($bits));
     }
     return $allBits;
 }