python - 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)
谢谢你
解决方案
您的 BFS 实现当前从队列的错误一端弹出。您应该使用 popleft() 而不是 pop()。
d = deque([root])
while d:
el = d.popleft()
d.extend(el)
print(el.tag)
推荐阅读
- .net - 有什么方法可以在不移植所有内容的情况下使用 .net Core 扩展旧版 .net 4 网站?
- javascript - 我真的需要在上传之前将图像转换为 base64 格式吗?
- javascript - 尝试从反应功能组件方法返回多个值
- android - Android资源链接失败
- javascript - 创建一列,该列是数据表中其他两列的总和
- javascript - 遍历 Array 中的 JSON 对象
- c# - 两个应用程序读/写时Redis数据不一致
- deep-learning - 独立于分辨率的 UNet 实现?
- c# - 使用 Xaramin 和 c# 向用户显示图像
- svn - 是否可以在 SVN Authz 文件中使用通配符?