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随机生成一个6位的验证码代码分享
Mar 24 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
基于python3实现socket文件传输和校验
Jul 28 Python
Django Rest framework之认证的实现代码
Dec 17 Python
Python flask框架post接口调用示例
Jul 03 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
python global关键字的用法详解
Sep 05 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
python3 中时间戳、时间、日期的转换和加减操作
Jul 14 Python
2021年最新用于图像处理的Python库总结
Jun 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执行sql语句的写法
2009/03/10 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
wxPython中文教程入门实例
2014/06/09 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
python实现PID算法及测试的例子
2019/08/08 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
Python3 读取Word文件方式
2020/02/13 Python
Python自带的IDE在哪里
2020/07/01 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
华为python面试题
2016/05/03 面试题
期末总结的个人自我评价
2013/11/02 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
校长四风对照检查材料
2014/09/27 职场文书
机关作风建设自查报告
2014/10/22 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
结婚堵门保证书
2015/05/08 职场文书
超强台风观后感
2015/06/09 职场文书
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS