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批量下载图片的三种方法
Apr 22 Python
使用python调用浏览器并打开一个网址的例子
Jun 05 Python
python实现判断数组是否包含指定元素的方法
Jul 15 Python
Python中的集合类型知识讲解
Aug 19 Python
深入浅出分析Python装饰器用法
Jul 28 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
python 导入数据及作图的实现
Dec 03 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
Python实现SMTP邮件发送
Jun 16 Python
序列化Python对象的方法
Aug 01 Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 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编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
php实现复制移动文件的方法
2015/07/29 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
js左侧三级菜单导航实例代码
2013/09/13 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
Vue实现跑马灯效果
2020/05/25 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
Python中多线程thread与threading的实现方法
2014/08/18 Python
python实现的简单猜数字游戏
2015/04/04 Python
python实现多线程抓取知乎用户
2016/12/12 Python
python实现二叉树的遍历
2017/12/11 Python
python字符串的方法与操作大全
2018/01/30 Python
python常用函数与用法示例
2019/07/02 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
工作鉴定评语
2014/05/04 职场文书
城管年度个人总结
2015/02/28 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
亮剑观后感300字
2015/06/05 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers