有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

因此,对于我们得到的赋值,我们必须在一个类中创建一个二进制搜索树,在方法private void buildTree()中表示莫尔斯电码one(thishttps://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) 个答案

  1. # 1 楼答案

    不是100%确定这是如何工作的,但我从您想要构建树的数组中猜到,并且查看它表明它是一个depth first tree。这是一个相当简单的概念,您可以很容易地将其转换为该树的数组;到处都是深度优先树遍历代码

    一旦拥有了数组,就可以通过使用2*(node)作为左子节点,使用2*(node)+1作为右子节点来获取当前节点的左或右子节点