开发者社区> python之战> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

python中的树数据结构

简介: 线性数据中的典型顺序表和链表已经讲完: 《顺序表数据结构在python中的应用》 《python实现单向链表数据结构及其基本方法》 《python实现单向循环链表数据结构及其方法》 《python实现双向链表基本结构及其基本方法》 《python实现双向循环链表基本结构及其基本方法》 《python实现堆栈数据结构及其基本方法》 《Python实现双端队列数据结构及其基本方法》 下面将说图形结构中的典型数据机构:树;是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。
+关注继续查看

线性数据中的典型顺序表和链表已经讲完:

顺序表数据结构在python中的应用

python实现单向链表数据结构及其基本方法

python实现单向循环链表数据结构及其方法

python实现双向链表基本结构及其基本方法

python实现双向循环链表基本结构及其基本方法

python实现堆栈数据结构及其基本方法

Python实现双端队列数据结构及其基本方法

下面将说图形结构中的典型数据机构:树;是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。

2019-04-10-20_03_12.png

2019-04-10-20_03_14.png

树的一些基础概念:

  • 节点的度:一个节点含有的子树的个数称为该节点的度;

  • 树的度:一棵树中,最大的节点的度称为树的度;

  • 叶节点终端节点:度为零的节点;

  • 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

  • 树的高度深度:树中节点的最大层次;

  • 森林:由m(m>=0)棵互不相交的树的集合称为森林;

  • 路径:对于一棵子树中的任意两个不同的结点,如果从一个结点出发,按层次自上而下沿着一个个树枝能到达另一结点,称它们之间存在着一条路径

        常用树的分类:

无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树;

有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树;

    二叉树:每个节点最多含有两个子树的树称为二叉树;

    完全二叉树:对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树,其中满二叉树的定义是所有叶节点都在最底层的完全二叉树;

    平衡二叉树(AVL树):当且仅当任何节点的两棵子树的高度差不大于1的二叉树;

    排序二叉树(二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树);

    霍夫曼树(用于信息编码):带权路径最短的二叉树称为哈夫曼树或最优二叉树;

    B树:一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多余两个子树。


树的储存:

在python中一切皆对象,树也不列外,树在python中可以通过列表和链表来储存。通过列表是将每个节点对象储存,在逻辑上不过形象,基本不用;用的最多的是通过链表构建一个树对象,其基本属性是根节点,根节点的左树属性和右树属性连接不同的节点,依次构建一颗庞大的树。

class Node(object):
    """节点类"""
    def __init__(self, elem=-1, lchild=None, rchild=None):
        self.elem = elem
        self.lchild = lchild
        self.rchild = rchild


class Tree(object):
    """树类"""
    def __init__(self, root=None):
        self.root = root



后面将主要说二叉树、平衡二叉树、红黑树及其相关的一些重要方法的python实现。

2019-04-10-20_03_14.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一篇文章讲清python开发必懂的8种数据结构
一篇文章讲清python开发必懂的8种数据结构
0 0
数据结构基本算法之高等排序(python版本)
数据结构基本算法之高等排序(python版本)
0 0
数据结构基本算法(python版本)
数据结构基本算法(python版本)
0 0
【python进阶系列之pandas】数据处理的大佬 pandas之数据结构
这里是三岁,速学了pandas,怕自己不会用整理了一下资料,有问题的地方或者不对的希望大家多多指出,批评指正!!! 由于pandas的内容过多我们就把经常使用的进行解析,其他的我们后续逐步添加
0 0
Python数据结构与算法(10)---二进制数据结构Struct
Python数据结构与算法(10)---二进制数据结构Struct
0 0
python:Pandas的数据结构:Series,DataFrame
1.Pandas提供的数据结构和函数的设计,将使表格数据的工作快速、简单、更易懂。所以利用Pandas进行数据操作、预处理、清洗是Python数据分析中的重要技能。
0 0
搞定Python的几个常用数据结构!
搞定Python的几个常用数据结构!
0 0
Python数据结构:栈队列哈希合集(10+1),复现几遍,包你学会
Python数据结构:栈队列哈希合集(10+1),复现几遍,包你学会
0 0
Smarter Python数据结构:用队列实现一个排序系统(关于人员入队列与出队列)
Smarter Python数据结构:用队列实现一个排序系统(关于人员入队列与出队列)
0 0
Smarter Python数据结构:如何翻转栈
Smarter Python数据结构:如何翻转栈
0 0
+关注
python之战
专注python学习与应用擅长爬虫、web、全栈,专注RPA技术实施;(个人公号:Python之战)
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载