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下的多进程编程
Apr 28 Python
python占位符输入方式实例
May 27 Python
python for和else语句趣谈
Jul 02 Python
Django Rest framework认证组件详细用法
Jul 25 Python
Python中如何引入第三方模块
May 27 Python
使用Python将语音转换为文本的方法
Aug 10 Python
详解python的super()的作用和原理
Oct 29 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
python执行js代码的方法
May 13 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
php木马攻击防御之道
2008/03/24 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
vuex实现购物车功能
2020/06/28 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
python常规方法实现数组的全排列
2015/03/17 Python
Python 的描述符 descriptor详解
2016/02/27 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
int在python中的含义以及用法
2019/06/27 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python基于event实现线程间通信控制
2020/01/13 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
搬家公司的创业计划书
2014/01/01 职场文书
《落花生》教学反思
2014/02/25 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
社保转移委托书范本
2014/10/08 职场文书
国庆节慰问信
2015/02/15 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python