Рекурсивный поиск в дереве - PullRequest
1 голос
/ 19 августа 2010

Я работаю со Stanford Parser в ruby ​​и хочу найти все узлы дерева с определенным именем метки. Это рекурсивный метод, который я до сих пор кодировал

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

я хочу, чтобы метод возвращал список узлов дерева, которые имеют метку в качестве метки

Ответы [ 2 ]

0 голосов
/ 19 августа 2010

мой оригинальный код был верным, но у ruby ​​возникли проблемы с

if tree.lable.toString == lablename then

утверждение, оказывается, что tree.value также работает, так что теперь я проверяю

if tree.value == lablename then

и это работает.

0 голосов
/ 19 августа 2010

Я не знаком StanfordParser, но я полагаю, что вам нужно вывести нисходящую часть обхода из внутреннего условного и всегда делать это.

Кроме того, они действительно реализовали метод toString? Шутки в сторону? Это не .to_s? Я имел в виду Java, до того как я нашел Ruby ...: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...