首页 > 解决方案 > LXML文件Python的广度优先搜索遍历

问题描述

我正在对 XML 文件执行广度优先搜索 (BFS) 遍历。深度优先搜索算法显示在https://lxml.de/3.3/api.html#lxml-etre中。但是,我需要帮助来应用基于此代码的 BFS 搜索。以下是文档中给出的代码:

>>> root = etree.XML('<root><a><b/><c/></a><d><e/></d></root>')
>>> print(etree.tostring(root, pretty_print=True, encoding='unicode'))
<root>
  <a>
    <b/>
    <c/>
  </a>
  <d>
    <e/>
  </d>
</root>

>>> queue = deque([root])
>>> while queue:
...    el = queue.popleft()  # pop next element
...    queue.extend(el)      # append its children
...    print(el.tag)

根 a d b c e

我需要帮助来尝试附加它以使其适合 BFS 遍历。下面是我尝试编写的代码示例,但它无法正常工作。有人可以帮忙吗。我的代码:从集合导入双端队列

>>> d = deque([root])
>>> while d:
    >>> el = d.pop() 
    >>> d.extend(el)
    >>> print(el.tag)

谢谢你

标签: pythonxmlxml-parsinglxmlbreadth-first-search

解决方案


您的 BFS 实现当前从队列的错误一端弹出。您应该使用 popleft() 而不是 pop()。

d = deque([root])
while d:
    el = d.popleft() 
    d.extend(el)
    print(el.tag)

推荐阅读