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实现的个人所得税计算器示例
Jun 01 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
处理python中多线程与多进程中的数据共享问题
Jul 28 Python
Python shelve模块实现解析
Aug 28 Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
python绘制高斯曲线
Feb 19 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 Python
Python 阶乘详解
Oct 05 Python
python blinker 信号库
May 04 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中使用redis
2013/11/04 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
斜45度寻路实现函数
2009/08/20 Javascript
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
Bootstrap每天必学之导航组件
2016/04/25 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
python映射列表实例分析
2015/01/26 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Python中断多重循环的思路总结
2019/10/04 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
竞聘副主任科员演讲稿
2014/01/11 职场文书
酒吧创业计划书
2014/01/18 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
爸爸的花儿落了教学反思
2014/02/20 职场文书
环境日宣传活动总结
2014/07/09 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
刘胡兰观后感
2015/06/16 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
MySQL创建管理HASH分区
2022/04/13 MySQL
Fluentd搭建日志收集服务
2022/09/23 Servers