python深度优先与广度优先的遍历算法比较
来源:互联网 发布:尿布台有必要买吗 知乎 编辑:程序博客网 时间:2024/06/09 15:24
在实现爬虫遍历页面url的算法的时候,我们需要使用到深度优先或者广度优先的遍历算法,
例子:现在我们使用两种算法进行遍历下面结构的一棵树结构
深度优先:
将一个子节点的所有内容全部遍历完毕之后再去遍历其他节点实现的 (递归实现)
上面的树通过深度优先遍历出来的结果是: A-->B-->D-->E-->I-->C-->F-->G-->H
使用python语言编写的代码如下:
def depth_tree(tree_node): if tree_node is not None: print(tree_node._data) if tree_node._left is not None: return depth_tree(tree_node._left) if tree_node._right is not None: return depth_tree(tree_node._right)
广度优先:
广度优先的算法的实现是通过 分层次的进行遍历 先遍历第一层,然后第二层,第三层 (队列实现)
上面的树通过深度优先遍历出来的结果是: A-->B-->C-->D-->E-->F-->F-->G-->H
#广度优先遍历算法def level_queue(root): if root is None: return my_queue = [] node = root my_queue.append(node) while my_queue: node = my_queue.pop(0) print(node.elem) if node.lchild is not None: my_queue.append(node.lchild) if node.rchild is not None: my_queue.append(node.rchild)
比较上面的两种算法,我们看出,深度优先遍历的算法是通过递归的方式一只只遍历某一个节点从而进行的,
而广度优先遍历算法则是把上一个层次的所有节点归入队列全部遍历完毕再进行下面的遍历的
阅读全文
0 0
- python深度优先与广度优先的遍历算法比较
- 树的广度优先遍历与深度优先遍历算法
- 深度优先算法、广度优先算法 与 图的遍历
- 图的深度优先遍历和广度优先遍历算法
- 深度优先遍历与广度优先遍历
- 深度优先遍历与广度优先遍历
- 深度优先遍历与广度优先遍历
- 深度优先遍历与广度优先遍历
- 深度优先遍历与广度优先遍历
- 深度优先遍历与广度优先遍历
- 深度优先遍历与广度优先遍历
- 图的深度优先遍历与广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历
- 二叉树的深度优先遍历与广度优先遍历
- 图的广度优先遍历与深度优先遍历
- 二叉树的深度优先遍历与广度优先遍历
- 深度优先和广度优先遍历算法
- Android中Bundle传递数据和对象
- SSH三大框架常用注解
- TreeView的图标个性化和动态数据加载
- JavaSE中的流程控制
- 小朋友学Java(10):多态
- python深度优先与广度优先的遍历算法比较
- 适合.net 2.0/3.5/4.0的Newtonsoft.Json.dll类,免费下载
- JQuery 自定义动画( animate() )
- ECharts开发实战(1) ---- ECharts获取Java后台JSON数据,渲染显示图表
- 多维数组和多维指针
- NSDragOperation
- 【MIUI9_7.12.05】小米6 sagit 高通骁龙835 基于安卓N(Android 7.1)时间刺客修改精简优化版本
- 循环例题练习
- 首个博客