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 getopt 参数处理小示例
Jun 09 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
详解python中requirements.txt的一切
Mar 03 Python
python使用thrift教程的方法示例
Mar 21 Python
python多线程实现TCP服务端
Sep 03 Python
python 协程 gevent原理与用法分析
Nov 22 Python
Python:type、object、class与内置类型实例
Dec 25 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
Python return语句如何实现结果返回调用
Oct 15 Python
pytest实现多进程与多线程运行超好用的插件
Jul 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最常用的正则表达式
2017/02/13 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
Django中url的反向查询的方法
2018/03/14 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
学生自我鉴定
2013/12/18 职场文书
毕业设计计划书
2014/01/09 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
员工工作及收入证明
2014/10/28 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
python小程序之飘落的银杏
2021/04/17 Python
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL