为摩尔斯电码创建二进制搜索树

时间:2015-12-06 05:43:31

标签: java tree

因此,对于我们得到的赋值,我们必须在我们的一个类中创建一个二叉搜索树,该类在方法private void buildTree()中表示莫尔斯码(this https://en.wikipedia.org/wiki/Morse_code#/media/File:Morse_code_tree3.png)。为了帮助我们,他给了我们一个阵列,里面装满了我将在一秒钟内展示的所有角色。在该方法中,我们必须通过引用已经声明为topMostNode的节点来创建树。 char值数组在这里

private static final char treeChars[] =
    { 'E', 'I', 'S', 'H', '5', '4', 'V', '3', 'U', 'F', UNUSED_CHAR, '2', 'A',
      'R', 'L', 'W', 'P', 'J', '1',
      'T', 'N', 'D', 'B', '6', 'X', 'K',
      'C', 'Y', 'M', 'G', 'Z', '7', 'Q', 'O', UNUSED_CHAR, '8', UNUSED_CHAR, '9', '0'
    };

他说我们必须使用某个序列将该数组放在我们树中早期图像的格式中,但过去几个小时我一直在盯着它,老实说也看不出它是什么。这似乎是不可能的,因为数组只是跳过树中不需要的不可打印字符,除非他们需要指向其他有效字符,并且这些无效字符随机放置在树的底部,因此没有模式知道何时不指向节点的dit或dah部分。我该怎么做呢?我老老实实地认为,此时只需硬编码每个值。谢谢!

1 个答案:

答案 0 :(得分:0)

不是100%肯定这是如何工作的,但我猜想你要构建树的数组,看着它显示它是depth first tree。这是一个相当简单的概念,您可以很容易地转换为该树的数组;有深度的第一个树遍历代码。

获得数组后,您可以使用左侧子项2*(node)和右侧子项2*(node)+1来获取当前节点的左侧或右侧子项。