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; }