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中的descriptor描述器的作用及用法
Jun 27 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
Django日志模块logging的配置详解
Feb 14 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
python将txt文件读入为np.array的方法
Oct 30 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
详解python做UI界面的方法
Feb 27 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
python批量处理txt文件的实例代码
Jan 13 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
Python加密与解密模块hashlib与hmac
Jun 05 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
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
linux下编译安装memcached服务
2014/08/03 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python获取url的返回信息方法
2018/12/17 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
浙大毕业生自荐信
2014/01/26 职场文书
40岁生日感言
2014/02/15 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
中学生打架检讨书
2014/10/13 职场文书
委托书格式范文
2015/01/28 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
党支部考察鉴定意见
2015/06/02 职场文书