-2

我有一个句子Programcreek is a very huge and useful website.解析后我将其转换为以下字符串格式:

(TOP (S (NP (NN Programcreek)) (VP (VBZ is) (NP (DT a) (ADJP (RB very) (JJ huge) (CC and) (JJ useful)))) (. website.)))

我想将此解析后的句子转换为图中所示的树。如何做到这一点?我是Java新手,所以我不知道是否有标准的方法?欢迎任何帮助/建议。谢谢

4

2 回答 2

2

Java 没有标准的树结构(有一些 Collection 类,如 TreeMap,但它们只是在内部使用树结构),因此您必须创建自己的。这是一个例子:

public class Node {
    public String nodeText;
    public List<Node> children = new ArrayList<Node>();
}

现在你必须解析你的字符串并做类似的事情:

当您点击 a (时,您将创建一个新节点并设置nodeText为紧跟在(. 然后你会递归地继续解析字符串并在那里创建新节点,直到你点击). 这应该结束递归并返回创建的节点列表。在您开始递归的地方,您会将所有返回的节点作为子节点添加到您的节点。

这是非常基本的,您必须对根节点进行一些特殊处理,但是无论如何都有很多关于树的文献和教程。

于 2013-09-14T06:05:25.787 回答
1

值得阅读有关此主题的更多信息,而不是像您一样寻求答案。您至少应该尝试自己解决问题。一些关于语言树的阅读http://en.m.wikipedia.org/wiki/Parse_tree

还有一些来自另一篇关于堆栈溢出的信息,用于在 Java Java 树数据结构中构建树?

于 2013-09-14T07:34:51.867 回答