【发布时间】:2015-02-09 10:55:42
【问题描述】:
我正在用 Python 编码一棵 Huffman 树。我有一个常规函数,它接收要编码的字符串和霍夫曼树。它创建一个字符串字符数组和一个空数组,其条目将是对应于每个字符的二进制路径。这个函数循环遍历字符串数组中的每个字符,调用函数 2,它递归地搜索树,构建二进制代码并在找到字母后返回它。
一切正常 - 递归函数在树中正确移动,找到并打印正确的路径。唯一的问题是,当我将该返回值分配给 function1 中的一个变量并将其附加到二进制数组时,它变为None。您不能将递归返回语句分配给这样的变量吗?任何帮助将不胜感激,因为我觉得我即将完成这项工作。
这是我的代码:
def huffmanEncoder(s, t): """用树 t 编码字符串 s""" s = 列表 乙 = [] 对于我在范围内(len(s)): val = recursiveHuff(t, '', s[i]) 打印'val:',val b.追加(验证) 打印 b def recursiveHuff(树,路径,字符): """给定一棵树、一个空字符串'path'和一个字符, 在树中找到所述字符并返回二进制路径""" 打印'寻找:\t',字符,'路径:\t',路径 如果不是 isLeaf(tree): recursiveHuff(getLeftChild(tree), path+'0', char) recursiveHuff(getRightChild(tree), path+'1', char) 别的: n = getNodeValue(树) 如果 n[1] == 字符: 打印 'found', char, 'at', 路径 返回路径【问题讨论】:
标签: python arrays recursion huffman-code