假设我们有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
上图是我想要的一种树。 请不要写任何代码。我想了解这个概念。解释你作为程序员的方法。
答案 0 :(得分:1)
我会使用树结构然后我会迭代填充树的每个数组。 Root =你好
然后,对于每个阵列的佩戴,检查叶子的
然后我走进树中,在阵列中前进
直到阵列结束
答案 1 :(得分:1)
定义Composite的Node类。创建映射,其中键是这些数组中的字符串,值是节点。迭代数组检查是否已为该值创建了一个Node,如果没有创建一个。然后检查以前的值并将节点添加到与节点关联的值。
答案 2 :(得分:1)
这是一棵树,其中的单词可能会紧跟一个给定的单词。
因此应该有一个人为的根,因为可能有一个句子用另一个词而不是“你好”。
将所有这些句子(array1,...)本身放入数组(或集合或数据库)中。所以人们可以走过它们;可以认为是可迭代的。
有一个部分树,最初是空的,只包含ROOT。
然后循环直到所有单词都在树中,寻找要添加到已存在的单词的新单词。 对于每个句子,将第一个单词放在根目录下(ROOT已经存在)。 对于每个其他单词,如果前一个单词在树中,则将该单词放在上一个树下。
如您所见,一个天真的方法(遵循上述方法)对稳定的固定数据将需要跳过很多。人们当然可以将单词映射到其所有后继者的树节点,然后算法变得非常简单。