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编程把二叉树打印成多行代码
Jan 04 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
Django基础知识与基本应用入门教程
Jul 20 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
python读取与处理netcdf数据方式
Feb 14 Python
Python发送邮件封装实现过程详解
May 09 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
python绘制趋势图的示例
Sep 17 Python
详解python对象之间的交互
Sep 29 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
Python echarts实现数据可视化实例详解
Mar 03 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 批量删除数据的方法分析
2009/10/30 PHP
PHP 源代码压缩小工具
2009/12/22 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
node.js中的http.request方法使用说明
2014/12/14 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python sys.path详细介绍
2013/10/17 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
python手写均值滤波
2020/02/19 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
通信工程专业毕业生推荐信
2013/12/25 职场文书
2014组织生活会方案
2014/05/19 职场文书
模具专业自荐信
2014/05/29 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
用Java实现简单计算器功能
2021/07/21 Java/Android
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python