在树中递归搜索
我正在使用红宝石的斯坦福分析器,并且想要搜索具有特定标签名称的树的所有节点。 这是递归的方法我已经编码到目前为止在树中递归搜索
def searchTreeWithLabel(tree,lablename,listOfNodes)
if tree.instance_of?(StanfordParser::Tree)
if tree.lable.toString == lablename then
listOfNodes << tree
else
tree.children.each { |c| searchTreeWithLabel(c, lablename, listOfNodes)}
end
end
listOfNodes
end
我想方法去返回标签为标签
树节点列表,我不熟悉StanfordParser
但我想你需要将遍历的下降部分从内部条件中取出并始终执行。
此外,他们真的实施toString
方法吗?真的吗?这不是.to_s
?我的意思是,我喜欢Java的,之前我发现红宝石... :-)
他们没有实现一个toString,这个方法是在一个Tree实例上调用的,它实际上是一个Java实例,可以通过Ruby的java桥梁在ruby中使用。 – charudatta 2010-08-19 00:19:54
呵呵,我确实有一个合理的解释,看起来很有趣。 .. – DigitalRoss 2010-08-19 00:32:44
我原来的代码是正确的,但红宝石是有一些问题与
if tree.lable.toString == lablename then
声明,证明tree.value工作原理所以现在我检查
if tree.value == lablename then
它的工作原理。
它目前做什么? – Borealid 2010-08-19 00:00:28
不行吗? – rogerdpack 2010-08-19 00:00:38
我在irb上试过了...它只是退出了,没有错误信息 – charudatta 2010-08-19 00:02:25