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实现抓取城市的PM2.5浓度和排名
Mar 19 Python
Python实现在线程里运行scrapy的方法
Apr 07 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
python树莓派红外反射传感器
Jan 21 Python
python学习开发mock接口
Apr 28 Python
tensorflow的计算图总结
Jan 12 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python基于requests实现模拟上传文件
Apr 21 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
无惧面试,带你搞懂python 装饰器
Aug 17 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
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
PHP云打印类完整示例
2016/10/15 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
Javascript倒计时代码
2010/08/12 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
简单了解前端渐进式框架VUE
2020/07/20 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
python单例模式的多种实现方法
2019/07/26 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
体育活动总结范文
2014/05/04 职场文书
实验室的标语
2014/06/20 职场文书
委托书格式
2014/08/01 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
python的html标准库
2022/04/29 Python