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脚本批量下载DesktopNexus壁纸的教程
May 06 Python
Python有序字典简单实现方法示例
Sep 28 Python
快速入门python学习笔记
Dec 06 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
Python实现基于POS算法的区块链
Aug 07 Python
python实现字符串和字典的转换
Sep 29 Python
浅析Python函数式编程
Oct 06 Python
对python调用RPC接口的实例详解
Jan 03 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
python的依赖管理的实现
May 14 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 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查看session内容的函数
2008/08/27 PHP
php str_pad 函数用法简介
2009/07/11 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
php中文验证码实现方法
2015/06/18 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
Laravel下生成验证码的类
2017/11/15 PHP
js身份证验证超强脚本
2008/10/26 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
Python深入学习之对象的属性
2014/08/31 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
python实现简易淘宝购物
2019/11/22 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
通过cmd进入python的步骤
2020/06/16 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
商场主管竞聘书
2014/03/31 职场文书
离婚协议书怎么写
2014/09/12 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS