递归搜索树

时间:2010-08-18 23:57:46

标签: ruby recursion tree

我正在使用ruby中的Stanford Parser,并希望搜索具有特定标签名称的树的所有节点。 这是我到目前为止编码的递归方法

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

我希望该方法返回标签为labelname

的Tree节点列表

2 个答案:

答案 0 :(得分:0)

我不熟悉StanfordParser但是我想你需要将遍历的下降部分从内部条件中取出来并且总是这样做。

另外,他们真的实现了toString方法吗?真的吗?这不是.to_s?我的意思是,在我找到Ruby之前,我很喜欢Java ......: - )

答案 1 :(得分:0)

我的原始代码是正确的,但ruby在

方面遇到了一些问题
if tree.lable.toString == lablename then

语句,结果是tree.value也可以,所以现在我正在检查

if tree.value == lablename then

它有效。