Python简单定义与使用二叉树示例


Posted in Python onMay 11, 2018

本文实例讲述了Python简单定义与使用二叉树的方法。分享给大家供大家参考,具体如下:

class BinaryTree:
  def __init__(self,rootObj):
    self.root = rootObj
    self.leftChild = None
    self.rightChild = None
  def insertLeft(self,newNode):
    if self.leftChild == None:
      self.leftChild = BinaryTree(newNode)
    else:
      print('The leftChild is not None.You can not insert')
  def insertRight(self,newNode):
    if self.rightChild == None:
      self.rightChild = BinaryTree(newNode)
    else:
      print('The rightChild is not None.You can not insert')

构建了一个简单的二叉树类,它的初始化函数,将传入的rootObj赋值给self.root,作为根节点,leftChild和rightChild都默认为None。

函数insertLeft为向二叉树的左子树赋值,若leftChild为空,则先构造一个BinaryTree(newNode),即实例化一个新的二叉树,然后将这棵二叉树赋值给原来的二叉树的leftChild。此处递归调用了BinaryTree这个类。

若不为空 则输出:The rightChild is not None.You can not insert

执行下述语句

r = BinaryTree('a')
print('root:',r.root,';','leftChild:',r.leftChild,';','rightChild:',r.rightChild)

输出

root: a ; leftChild: None ; rightChild: None

即我们构造了一颗二叉树,根节点为a,左右子树均为None

然后执行下述语句

r.insertLeft('b')
print('root:',r.root,';','leftChild:',r.leftChild,';','rightChild:',r.rightChild)
print('root:',r.root,';','leftChild.root:',r.leftChild.root,';','rightChild:',r.rightChild)

输出

root: a ; leftChild: <__main__.BinaryTree object at 0x000002431E4A0DA0> ; rightChild: None
root: a ; leftChild.root: b ; rightChild: None

我们向r插入了一个左节点,查看输出的第一句话,可以看到左节点其实也是一个BinaryTree,这是因为插入时,递归生成的。

第二句输出,可以查看左节点的值

最后执行

r.insertLeft('c')

输出:

The leftChild is not None.You can not insert

可以看到,我们无法再向左节点插入了,因为该节点已经有值了

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中的localtime()方法使用详解
May 22 Python
python 查找字符串是否存在实例详解
Jan 20 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
Tensorflow 实现释放内存
Feb 03 Python
Python中if有多个条件处理方法
Feb 26 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
QML用PathView实现轮播图
Jun 03 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
python单元测试框架pytest的使用示例
Oct 07 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 Python
Python堆排序原理与实现方法详解
May 11 #Python
python 执行shell命令并将结果保存的实例
May 11 #Python
python 实现登录网页的操作方法
May 11 #Python
Python利用splinter实现浏览器自动化操作方法
May 11 #Python
Python爬虫信息输入及页面的切换方法
May 11 #Python
对python-3-print重定向输出的几种方法总结
May 11 #Python
利用Python如何实现数据驱动的接口自动化测试
May 11 #Python
You might like
如何使用PHP往windows中添加用户
2006/12/06 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
jquery实现数字输入框
2017/02/22 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
原生js生成图片验证码
2020/10/11 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
高中的自我鉴定
2013/12/16 职场文书
七年级英语教学反思
2014/01/15 职场文书
yy婚礼主持词
2014/03/14 职场文书
设计专业自荐信
2014/06/19 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python