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调用新浪微博API项目实践
Jul 28 Python
分分钟入门python语言
Mar 20 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
python写入并获取剪切板内容的实例
May 31 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 Python
Python常用数字处理基本操作汇总
Sep 10 Python
python 实现波浪滤镜特效
Dec 02 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
Dec 21 Python
用Python自动清理系统垃圾的实现
Jan 18 Python
Python词云的正确实现方法实例
May 08 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抽奖小程序的实现代码
2013/06/18 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
js tab效果的实现代码
2009/12/26 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
JS实现简单拖拽效果
2017/06/21 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
Python的print用法示例
2014/02/11 Python
Python切片用法实例教程
2014/09/08 Python
Python实现读取并保存文件的类
2017/05/11 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
python读取和保存视频文件
2018/04/16 Python
django初始化数据库的实例
2018/05/27 Python
Python魔法方法详解
2019/02/13 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
python 如何实现遗传算法
2020/09/22 Python
中文系学生自荐信范文
2013/11/13 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
经费申请报告范文
2015/05/18 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis