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

相关文章
|
21天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
1月前
|
机器学习/深度学习 算法 数据挖掘
请解释Python中的决策树算法以及如何使用Sklearn库实现它。
决策树是监督学习算法,常用于分类和回归问题。Python的Sklearn库提供了决策树实现。以下是一步步创建决策树模型的简要步骤:导入所需库,加载数据集(如鸢尾花数据集),划分数据集为训练集和测试集,创建`DecisionTreeClassifier`,训练模型,预测测试集结果,最后通过`accuracy_score`评估模型性能。示例代码展示了这一过程。
|
1月前
|
存储 数据挖掘 索引
python数据分析——Python语言基础(数据结构基础)
数据结构是计算机科学中一种基本概念,其目的是确定数据元素之间的关系,实现数据的组织、存储和管理。了解和掌握常见的数据结构可以让我们更好地处理和管理数据
50 1
|
23小时前
|
机器学习/深度学习 算法 Python
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
|
1天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
19 1
|
6天前
|
机器学习/深度学习 存储 算法
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
26 7
|
6天前
|
机器学习/深度学习 数据可视化 算法
PYTHON用决策树分类预测糖尿病和可视化实例
PYTHON用决策树分类预测糖尿病和可视化实例
15 0
|
机器学习/深度学习 算法 Python
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
19 0
|
7天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
7天前
|
机器学习/深度学习 算法 Python
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
20 0