Python实现深度遍历和广度遍历的方法


Posted in Python onJanuary 22, 2019

深度遍历:

原则:从上到下,从左到右

逻辑(本质用递归):

1)、找根节点

2)、找根节点的左边

3)、找根节点的右边

class Node(object):
 def __init__(self, item=None, left=None, right=None):
  self.item = item
  self.left = left
  self.right = right
 
 
d = Node("D")
e = Node("E")
b = Node("B", d, e)
f = Node("F")
g = Node("G")
c = Node("C", f, g)
a = Node("A", b, c)
 
 
result = []
 
 
def deep_search(root):
 # 深度遍历 核心:递归
 result.append(root.item)
 if root.left:
  deep_search(root.left)
 if root.right:
  deep_search(root.right)
 return "-->".join(result)
 
 
print deep_search(a)

广度遍历:

核心:队列+递归

def wide_search(root, result=[]):
 
 if not result:
  result.append(root.item)
 if root.left:
  result.append(root.left.item)
 if root.right:
  result.append(root.right.item)
 if root.left:
  wide_search(root.left)
 if root.right:
  wide_search(root.right)
 return "-->".join(result)
 
 
print wide_search(a)

以上这篇Python实现深度遍历和广度遍历的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python专用方法与迭代机制实例分析
Sep 15 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
详解python中asyncio模块
Mar 03 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
python导入pandas具体步骤方法
Jun 23 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
图文详解Django使用Pycharm连接MySQL数据库
Aug 09 Python
django 连接数据库 sqlite的例子
Aug 14 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
python不同系统中打开方法
Jun 23 Python
PyTorch中permute的使用方法
Apr 26 Python
Python遍历文件夹 处理json文件的方法
Jan 22 #Python
Python多线程原理与用法实例剖析
Jan 22 #Python
python解析含有重复key的json方法
Jan 22 #Python
Python设计模式之简单工厂模式实例详解
Jan 22 #Python
对python字典过滤条件的实例详解
Jan 22 #Python
python实现淘宝秒杀脚本
Jun 23 #Python
python实现网页自动签到功能
Jan 21 #Python
You might like
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
详解JavaScript函数
2015/12/01 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
Vue动态实现评分效果
2017/05/24 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
linecache模块加载和缓存文件内容详解
2018/01/11 Python
python实现简单遗传算法
2018/03/19 Python
python 获取url中的参数列表实例
2018/12/18 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
Python实现井字棋小游戏
2020/03/09 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
简单租房协议书范本
2014/08/20 职场文书
祝酒词范文
2015/08/12 职场文书
晚会开幕词范文
2016/03/04 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers