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 urlopen()函数 示例分享
Jun 12 Python
用map函数来完成Python并行任务的简单示例
Apr 02 Python
python定时器(Timer)用法简单实例
Jun 04 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
使用python在本地电脑上快速处理数据
Jun 22 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
Jun 27 Python
python中的django是做什么的
Jul 31 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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
Windows下安装Memcached的步骤说明
2010/04/25 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
jQuery学习基础知识小结
2010/11/25 Javascript
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
Django之创建引擎索引报错及解决详解
2019/07/17 Python
基于django传递数据到后端的例子
2019/08/16 Python
python中关于数据类型的学习笔记
2020/07/19 Python
深入了解Python 方法之类方法 & 静态方法
2020/08/17 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
设计模式的基本要素是什么
2014/04/21 面试题
超市采购员岗位职责
2014/02/01 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
拆迁委托协议书
2014/09/15 职场文书
2014年国庆节寄语
2014/09/19 职场文书
运动会广播稿200字
2014/10/18 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
你会写请假条吗?
2019/06/26 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
Web应用开发TypeScript使用详解
2022/05/25 Javascript