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读写Redis数据库操作示例
Mar 18 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
python scatter函数用法实例详解
Feb 11 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
详解php命令注入攻击
2019/04/06 PHP
Javascript 刷新全集常用代码
2009/11/22 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
JavaScript如何操作css
2020/10/24 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
linux下python抓屏实现方法
2015/05/22 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
《Python学习手册》学习总结
2018/01/17 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Python-接口开发入门解析
2019/08/01 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
医科大学毕业生自荐信
2014/02/03 职场文书
2014年政教处工作总结
2014/12/20 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers