code: func printCodes(tree huffmanTree, prefix []byte) {
  	if tree == nil {
  		return
  	}
  
  	if tree.IsLeaf() {
  		node := tree.(*huffmanLeaf)
  		fmt.Printf("%v\t%d\t%d\t%s\n", node.Value(), node.Weight(), len(prefix), string(prefix))
  	} else {
  		prefix = append(prefix, '0')
  		printCodes(tree.Left(), prefix)
  		prefix = prefix[:len(prefix)-1]
  
  		prefix = append(prefix, '1')
  		printCodes(tree.Right(), prefix)
  		prefix = prefix[:len(prefix)-1]
  	}
  }
docs: // Print computed tree order