0

我正在编写一个程序,它将创建一个摩尔斯电码字母表(以及一个句号和一个撇号)的二叉树,然后它将读取一行摩尔斯电码并将其翻译成英文。(是的,我知道查找表会更容易,但我需要整理我的二叉树)。我认为我的一个很好的问题是我想按字母顺序将值放入树中,而不是按符号顺序。但肯定有办法做到这一点吗?因为如果我有一百万个这样的非数字值,我就不需要将它们排序为最简单的插入顺序......对吗?

它从一个文本文件中读取,其中每一行都有一个摩尔斯电码句子。- .... .. ... .. ... ..-. ..- -. .-.-.- 例如,“这很有趣”。符号之间的 1 个空格表示它是一个新字母,2 个空格表示它是一个新单词。

就目前而言,我得到了上面给出的那一行的输出“.$$$”,这意味着它正在读取一个句点,然后得到一个由 ('$$$') 表示的错误,这显然是错误的。 ..

就像我之前说的,我知道我很复杂,但是肯定有一种方法可以做到这一点,而无需先对树中的值进行排序,我现在想弄清楚这一点,而不是在某个时间紧缩。

有没有人有任何见解?这是不是太明显了,以至于我问起来会很尴尬?

4

1 回答 1

3

欢迎来到 SO 并感谢您提出一个有趣的问题。是的,在我看来,你让事情有点过于复杂了。例如,这里绝对不需要使用类。您可以重用现有的 python 数据结构来表示树:

def add(node, value, code):
    if code:
        add(node.setdefault(code[0], {}), value, code[1:])
    else:
        node['value'] = value

tree = {}
for value, code in alphabet:
    add(tree, value, code)

import pprint; pprint.pprint(tree)    

这为您提供了一个带有键.,的嵌套字典-,并且value更易于使用。

于 2013-04-23T06:28:47.613 回答