python数据结构树和二叉树简介


Posted in Python onApril 29, 2014

一、树的定义

树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。
树的递归定义:
树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:
(1)有且仅有一个特定的称为根(Root)的结点;
(2)其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(Subree)。

二、二叉树的定义

二叉树是由n(n≥0)个结点组成的有限集合、每个结点最多有两个子树的有序树。它或者是空集,或者是由一个根和称为左、右子树的两个不相交的二叉树组成。
特点:
(1)二叉树是有序树,即使只有一个子树,也必须区分左、右子树;
(2)二叉树的每个结点的度不能大于2,只能取0、1、2三者之一;
(3)二叉树中所有结点的形态有5种:空结点、无左右子树的结点、只有左子树的结点、只有右子树的结点和具有左右子树的结点。

三、二叉树的性质

性质1:二叉树的第i层上最多有个结点。
性质2:深度为h的二叉树上最多有-1个结点。
性质3:具有n个结点的二叉树的高度不小于的最大整数。
性质4:任意一棵二叉树中,如果叶子结点的个数为n0,度为2的结点的个数为n2,则必然有n0=n2+1。
满二叉树:若深度为h的二叉树,恰好具有-1个结点,则称为满二叉树。
完全二叉树:若一棵具有n个结点的二叉树的逻辑结构与满二叉树的前n个结点的逻辑结构完全相同,则称该二叉树为完全二叉树
扩充二叉树:除叶子结点外,其余结点都必须有两个孩子的二叉树。

四、二叉树的存储结构

二叉树的存储结构有顺序存储结构、链式存储结构
顺序存储:结构采用一维数组存储的。根据二叉树的性质6可计算出双亲结点、左右孩子结点的下标。因此满二叉树、完全二叉树的存储可采用一维数组,把结点按从上到下、从左到右的顺序存放在数组中,结点之间的关系可由性质6的公式计算得到。
链式存储:结构采用链表存储二叉树中的数据元素,用链建立二叉树中结点之间的关系。二叉树最常用的链式存储结构是二叉链,每个结点包含三个域,分别是数据元素域data、左孩子链域lChild和右孩子链域rChild。与单链表带头结点和不带头结点的两种情况相似,二叉链存储结构的二叉树也有带头结点和不带头结点两种

五、二叉树的操作

Python 相关文章推荐
使用Python脚本来控制Windows Azure的简单教程
Apr 16 Python
详细解读Python中的__init__()方法
May 02 Python
Python实现比较两个列表(list)范围
Jun 12 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
python cs架构实现简单文件传输
Mar 20 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 Python
python playwright之元素定位示例详解
Jul 23 Python
Python的ORM框架SQLAlchemy入门教程
Apr 28 #Python
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 #Python
Python的ORM框架SQLObject入门实例
Apr 28 #Python
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 #Python
python监控网卡流量并使用graphite绘图的示例
Apr 27 #Python
python抓取网页图片示例(python爬虫)
Apr 27 #Python
python实现sublime3的less编译插件示例
Apr 27 #Python
You might like
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
PHP新手上路(二)
2006/10/09 PHP
php 无限级缓存的类的扩展
2009/03/16 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
详解Python模块化编程与装饰器
2021/01/16 Python
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
寒假生活随笔
2015/08/15 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python