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中使用dict和set方法的教程
Apr 27 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python matplotlib绘图可视化知识点整理(小结)
Mar 16 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
浅析Python 引号、注释、字符串
Jul 25 Python
Python获取时间范围内日期列表和周列表的函数
Aug 05 Python
如何利用Python写个坦克大战
Nov 18 Python
Python的scikit-image模块实例讲解
Dec 30 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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
投票管理程序
2006/10/09 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
Python通过select实现异步IO的方法
2015/06/04 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
python处理excel绘制雷达图
2019/10/18 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
奥巴马演讲稿
2014/01/08 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
个人近期表现材料
2014/02/11 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2016高考感言
2015/08/01 职场文书
《包身工》教学反思
2016/02/23 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
nginx日志格式分析和修改
2022/04/28 Servers
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS