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迭代用法实例教程
Sep 08 Python
如何使用python爬取csdn博客访问量
Feb 14 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
python实现音乐下载器
Apr 15 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
python实现将读入的多维list转为一维list的方法
Jun 28 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
Python生成并下载文件后端代码实例
Aug 31 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
OpenCV 图像梯度的实现方法
Jul 25 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
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
python之wxPython菜单使用详解
2014/09/28 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
解决python 输出是省略号的问题
2018/04/19 Python
python小白学习包管理器pip安装
2020/06/09 Python
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
最热门的自我评价
2013/12/30 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
放飞理想演讲稿
2014/09/09 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
员工离职感谢信
2015/01/22 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
公司开除员工通知
2015/04/22 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers