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使用CMD模块更优雅的运行脚本
May 11 Python
使用python3.5仿微软记事本notepad
Jun 15 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
Django基础之Model操作步骤(介绍)
May 27 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
python 字符串只保留汉字的方法
Nov 16 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
python中pop()函数的语法与实例
Dec 01 Python
Django显示可视化图表的实践
May 10 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
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
js实时监听文本框状态的方法
2011/04/26 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
keras输出预测值和真实值方式
2020/06/27 Python
详解python对象之间的交互
2020/09/29 Python
python中pivot()函数基础知识点
2021/01/03 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
应届毕业生求职信
2014/05/26 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
出差报告格式模板
2014/11/06 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
休假证明书
2015/06/24 职场文书
大学生受助感言
2015/08/01 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
《植树问题》教学反思
2016/03/03 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android