4.3 树遍历

使用递归函数来遍历树是标准的做法。4.2中的内容进行了演示。

  1. def traverse(t):
  2. try:
  3. t.label()
  4. except AttributeError:
  5. print(t, end=" ")
  6. else:
  7. # Now we know that t.node is defined
  8. print('(', t.label(), end=" ")
  9. for child in t:
  10. traverse(child)
  11. print(')', end=" ")
  12. >>> t = nltk.Tree('(S (NP Alice) (VP chased (NP the rabbit)))')
  13. >>> traverse(t)
  14. ( S ( NP Alice ) ( VP chased ( NP the rabbit ) ) )

注意

我们已经使用了一种叫做动态类型的技术,检测t是一棵树(如定义了t.label())。