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实现登录人人网并抓取新鲜事的方法
May 11 Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
python timestamp和datetime之间转换详解
Dec 11 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
python pexpect ssh 远程登录服务器的方法
Feb 14 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 Python
使用Python封装excel操作指南
Jan 29 Python
python 开心网和豆瓣日记爬取的小爬虫
May 29 Python
Github 使用python对copilot做些简单使用测试
Apr 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设计模式 Command(命令模式)
2011/06/26 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
js验证上传图片的方法
2015/05/12 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
从Python的源码来解析Python下的freeblock
2015/05/11 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python中动态创建类实例的方法
2017/03/24 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
python 实现端口扫描工具
2020/12/18 Python
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
大学生求职工作的自我评价
2014/02/13 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技