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实现360皮肤按钮控件示例
Feb 21 Python
Python实现查找系统盘中需要找的字符
Jul 14 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
Django框架安装方法图文详解
Nov 04 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 Python
python十进制转二进制的详解
Feb 07 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
Python实现学生管理系统(面向对象版)
Jun 24 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 获取ip地址代码汇总
2015/07/05 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
PHP中16个高危函数整理
2019/09/19 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
javascript cookies操作集合
2010/04/12 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
js中less常用的方法小结
2017/08/09 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
在Python中编写数据库模块的教程
2015/04/29 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
Python实现调度算法代码详解
2017/12/01 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
领导调研接待方案
2014/02/27 职场文书
法定代表人证明书
2014/11/28 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server