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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
python用户管理系统
Mar 13 Python
python 检查是否为中文字符串的方法
Dec 28 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
python合并多个excel文件的示例
Sep 23 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来自动调用不同服务器上的flash
2006/10/09 PHP
php 购物车的例子
2009/05/04 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
utf8的编码算法 转载
2006/12/27 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
python中正则表达式的使用方法
2018/02/25 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
python3.7添加dlib模块的方法
2020/07/01 Python
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
写给老婆的检讨书
2014/02/21 职场文书
餐厅筹备计划书
2014/04/25 职场文书
机关搬迁方案
2014/05/18 职场文书
人事任命书范文
2014/06/04 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript