python数据结构树和二叉树,python数据结构树和二叉树简介
一、树的定义
树形结构是一类重要的非线性结构。树形结构是结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。
树的递归定义:
树(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数据结构之二叉树的遍历实例
python数据结构之二叉树的统计与转换实例 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网
python数据结构树和二叉树,python数据结构树和二叉树简介相关推荐
- 数据结构与算法:树与二叉树python实现
最近复习一遍数据结构与算法,做一些笔记,大家可以一起复习. 一.树的一些容易混淆的定义: 结点层:根结点的层定义为1:根的孩子为第二层结点,依此类推: 树的深度(或高度):树中最大的结点层: 满二叉树 ...
- Python数据结构与算法笔记(八):数据结构——树,二叉树和AVL树
树 class Node:def __init__(self, name, type='dir'):self.name = nameself.type = type #"dir" ...
- Python数据结构11:树的实现,树的应用,前中后序遍历,二叉查找树BST,平衡二叉树AVL树,哈夫曼树和哈夫曼编码
1.概念 树一种基本的"非线性"数据结构. 相关术语: 节点Node:组成树的基本部分.每个节点具有名称,或"键值",节点还可以保存额外数据项,数据项根据不同的 ...
- python tree结构_Python入门篇-数据结构树(tree)篇
Python入门篇-数据结构树(tree)篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.树概述 1>.树的概念 非线性结构,每个元素可以有多个前躯和后继 树是n(n& ...
- python代码实现二叉树的镜像树
python代码实现二叉树的镜像树 请完成一个函数,输入一个二叉树,该函数输出它的镜像.例如下图所示,左图是原二叉树,而右图则是该二叉树的镜像. 可以总结出这两棵树的根节点相同,但它们的左.右两个子节 ...
- JS 数据结构之旅 :通过JS实现栈、队列、二叉树、二分搜索树、AVL树、Trie树、并查集树、堆
JS 数据结构之旅 栈 概念 栈是一个线性结构,在计算机中是一个相当常见的数据结构. 栈的特点是只能在某一端添加或删除数据,遵循先进后出的原则 实现 每种数据结构都可以用很多种方式来实现,其实可以把栈 ...
- 考研复习之数据结构笔记(九)树(上)(树和二叉树的概念、特征、性质及相关实例)
目录 一.树的基本概念和术语 1.1 基本定义与特点 (1)基本定义: (2)基本特点 1.2 树的基本术语 1.3 树的基本性质 二.二叉树 2.1 二叉树的定义与性质 (1)基本概念 (2)与树的 ...
- 数据结构-图、二叉树、B(+)树
线性数据结构主要用于存储相互独立的数据,但是如果数据间存在某些关系,比如常用的地图导航,从一个地区前往另一个地区需要途径很多条道路,那么途径的各条道路以及地点都是有关联的,道路的拥堵情况.地点间的距离 ...
- 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集
第5-10章:线性结构,元素之间存在线性次序(线性表.数组与矩阵.栈.队列.跳表和散列表 第11-15章:层次结构(二叉树和树.优先队列.竞赛树.搜索树) 文章目录 11.1 树 11.2 二叉树 1 ...
最新文章
- pytorchviz visdom 可视化 pytorch
- 如何配置jenkins 与代理服务器吗?
- DML、DDL、DCL的分别是什么
- C++的一些知识点摘抄(创建基本类 高级类)
- 用Java解析:您可以使用的所有工具和库
- 软件工程学习笔记《一》什么是软件工程
- 前端学习(2884):dom更新操作的实现
- C++ PAT 乙级 ——1002 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
- 以小见大:如何设计注册登录页?
- 全站仪坐标计算机公式,全站仪使用方法及坐标计算讲解
- 代码逻辑分析_双十一模块 79.34% 的代码是怎样智能生成的
- Ubuntu 16.04中的Dock的应用顺序调整
- python命名空间,类成员,对象成员
- Java实现在线打开word文档加盖印章/盖章/签名功能
- CMMB蓄势待发,模拟电视东山再起
- 目标跟踪(二):拓展卡尔曼滤波(EKF)
- MySQL 日期计算
- 让TQ2440也用上设备树 (device tree 操作实例3_重要,对于移植很有参考价值_code)
- 人工智能机器人——水中机器人
- 程序员杂志在线阅读 豆瓣的架构—专访豆瓣网站的技术总监洪强宁
热门文章
- css 引用otf文件,CSS-如何将OTF / TTF文件转换为EOT格式?
- yum安装php和apache先装哪个,yum如何安装apache与php
- 日志文件列表 读书笔记《Linux 系统管理技术手册(第二版)》
- stealwatch里的安全功能——ETA结果会显示加密套件以及key长度,还有流量大小(例如41MB)...
- 使用 Python 在 GitHub 上运行你的博客
- rem是如何实现自适应布局的
- P1219 八皇后 含优化 1/5
- node.js querystring
- [partial] C#里partial关键字的作用
- Chapter 3 Phenomenon——23