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之Python安装
Sep 12 Python
Python json 错误xx is not JSON serializable解决办法
Mar 15 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
对numpy中布尔型数组的处理方法详解
Apr 17 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
pytorch中的inference使用实例
Feb 20 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
Python list去重且保持原顺序不变的方法
Apr 03 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
Php注入点构造代码
2008/06/14 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
安装工程师岗位职责
2015/02/13 职场文书
保研专家推荐信范文
2015/03/25 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python