字符串数组(树)

时间:2017-11-09 22:54:13

标签: java

假设我们有5个String数组:

String[] array1 = {"hello", "i", "cat"};
String[] array2 = {"hello", "i", "am"};
String[] array3 = {"hello", "James"};'
String[] array4 = {"hello", "i", "bob"};
String[] array5 = {"hello", "mike", "wasup"};

如何创建一个树,其中“hello”始终是根,第二个元素是根的子元素,其他元素成为子根的子元素。 (每个节点可以有0-n个节点子节点)

一个例子:

           hello
        /   \    \
      i    james   mike
    / \ \           /
  cat  am bob    wasup

上图是我想要的一种树。 请不要写任何代码。我想了解这个概念。解释你作为程序员的方法。

3 个答案:

答案 0 :(得分:1)

我会使用树结构然后我会迭代填充树的每个数组。 Root =你好

然后,对于每个阵列的佩戴,检查叶子的

  • 如果它不包含您的单词,则使用key = current word
  • 创建一个新叶

然后我走进树中,在阵列中前进

直到阵列结束

Java tree data-structure?

答案 1 :(得分:1)

定义Composite的Node类。创建映射,其中键是这些数组中的字符串,值是节点。迭代数组检查是否已为该值创建了一个Node,如果没有创建一个。然后检查以前的值并将节点添加到与节点关联的值。

答案 2 :(得分:1)

这是一棵树,其中的单词可能会紧跟一个给定的单词。

因此应该有一个人为的根,因为可能有一个句子用另一个词而不是“你好”。

将所有这些句子(array1,...)本身放入数组(或集合或数据库)中。所以人们可以走过它们;可以认为是可迭代的。

有一个部分树,最初是空的,只包含ROOT。

然后循环直到所有单词都在树中,寻找要添加到已存在的单词的新单词。 对于每个句子,将第一个单词放在根目录下(ROOT已经存在)。 对于每个其他单词,如果前一个单词在树中,则将该单词放在上一个树下。

如您所见,一个天真的方法(遵循上述方法)对稳定的固定数据将需要跳过很多。人们当然可以将单词映射到其所有后继者的树节点,然后算法变得非常简单。