4.3 树遍历
使用递归函数来遍历树是标准的做法。4.2中的内容进行了演示。
def traverse(t):
try:
t.label()
except AttributeError:
print(t, end=" ")
else:
# Now we know that t.node is defined
print('(', t.label(), end=" ")
for child in t:
traverse(child)
print(')', end=" ")
>>> t = nltk.Tree('(S (NP Alice) (VP chased (NP the rabbit)))')
>>> traverse(t)
( S ( NP Alice ) ( VP chased ( NP the rabbit ) ) )
注意
我们已经使用了一种叫做动态类型的技术,检测t
是一棵树(如定义了t.label()
)。