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的*args和**kwargs用法
Nov 01 Python
Python with的用法
Aug 22 Python
python自动zip压缩目录的方法
Jun 28 Python
python实现傅里叶级数展开的实现
Jul 21 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
如何更优雅地写python代码
Jul 02 Python
简单了解python的内存管理机制
Jul 08 Python
Python参数类型以及常见的坑详解
Jul 08 Python
Python range与enumerate函数区别解析
Feb 28 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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如何得到当前页和上一页的地址?
2006/11/27 PHP
深入php self与$this的详解
2013/06/08 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
订货会主持词
2015/07/01 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android