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 14 Python
python实现视频分帧效果
May 31 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 Python
pytorch 修改预训练model实例
Jan 18 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
利用Python如何实时检测自身内存占用
May 09 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
Python特殊属性property原理及使用方法解析
Oct 09 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
Python 正则模块详情
Nov 02 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学习 运算符与运算符优先级
2008/06/15 PHP
php解决约瑟夫环示例
2014/04/09 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
node文字生成图片的示例代码
2017/10/26 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
Vue基础配置讲解
2019/11/29 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
Python里disconnect UDP套接字的方法
2015/04/23 Python
python安装以及IDE的配置教程
2015/04/29 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python实现打印实心和空心菱形
2019/11/23 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
J2EE中的容器都包括哪些
2013/08/21 面试题
医学生自我鉴定范文
2014/03/26 职场文书
小学运动会演讲稿
2014/08/25 职场文书
2014年党员整改措施
2014/10/24 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
CSS的calc函数用法小结
2022/06/25 HTML / CSS