python数据结构之树

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#这个类是用于定义树的基本结构,leftjd:左节点,rightjd:右节点,data:数据
class  Tree():
     def  __init__( self ,leftjd = 0 ,rightjd = 0 ,data = 0 ):
         self .leftjd  =  leftjd
         self .rightjd  =  rightjd
         self .data  =  data
 
#这个类是用于定义一个二叉树
class  Btree():
     def  __init__( self ,base = 0 ):
         self .base  =  base
     
      #这个方法是判断根是否为空
     def  empty( self ):
         if  self .base  = =  0 :
             return  True
         else :
             return  False
             
      #这个方法是实现树的前序遍历,遍历方式为:根左右,也就是789
     def  qout( self ,jd):
         if  jd  = =  0 #这个if是判节点是否为空,如果是为空则原样返回
             return
         print  jd.data
         self .qout(jd.leftjd)
         self .qout(jd.rightjd)
         
      #这个方法是实现树的中序遍历,遍历方式为:左根右,也就是879
     def  mount( self ,jd):
         if  jd  = =  0 #这个if是判节点是否为空,如果是为空则原样返回
             return
         self .mount(jd.leftjd)
         print  jd.data
         self .mount(jd.rightjd)
         
      #这个方法是实现树的后序遍历,遍历方式为:左右根,也就是897
     def  hout( self ,jd):
         if  jd  = =  0 #这个if是判节点是否为空,如果是为空则原样返回
             return
         self .hout(jd.leftjd)
         self .hout(jd.rightjd)
         print  jd.data
 
if  __name__  = =  "__main__" :
         #注意:在写代码的时候,数据存储进去的时候需要倒过来写,也就是从叶子开始,而不是从根节点开始
     jd1  =  Tree(data = 8 #定义节点1,左节点的数据为8,但是这个8节点下面没有左节点和右节点,所以只需要传递一个data进去
     jd2  =  Tree(data = 9 )
     base  =  Tree(jd1,jd2, 7 )
 
     =  Btree(base)
     x.qout(x.base)
     x.hout(x.base)


下图为本示例的一个二叉树的结构图,上面的代码就是实现下图的存储方式

wKioL1iIe2KBhsGYAACH-vLluYo881.jpg-wh_50


本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1894225


相关文章
|
12天前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
83 1
|
10天前
|
机器学习/深度学习 算法 数据挖掘
6种有效的时间序列数据特征工程技术(使用Python)
在本文中,我们将探讨使用日期时间列提取有用信息的各种特征工程技术。
40 0
|
1天前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。
|
1天前
|
存储 机器学习/深度学习 C语言
数据结构基础详解(C语言): 树与二叉树的基本类型与存储结构详解
本文介绍了树和二叉树的基本概念及性质。树是由节点组成的层次结构,其中节点的度为其分支数量,树的度为树中最大节点度数。二叉树是一种特殊的树,其节点最多有两个子节点,具有多种性质,如叶子节点数与度为2的节点数之间的关系。此外,还介绍了二叉树的不同形态,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树,并探讨了二叉树的顺序存储和链式存储结构。
|
1天前
|
存储 C语言
数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树
本文详细介绍了树与二叉树的应用,涵盖哈夫曼树与哈夫曼编码、并查集以及二叉排序树等内容。首先讲解了哈夫曼树的构造方法及其在数据压缩中的应用;接着介绍了并查集的基本概念、存储结构及优化方法;随后探讨了二叉排序树的定义、查找、插入和删除操作;最后阐述了平衡二叉树的概念及其在保证树平衡状态下的插入和删除操作。通过本文,读者可以全面了解树与二叉树在实际问题中的应用技巧和优化策略。
|
1天前
|
数据采集 存储 数据挖掘
使用Python读取Excel数据
本文介绍了如何使用Python的`pandas`库读取和操作Excel文件。首先,需要安装`pandas`和`openpyxl`库。接着,通过`read_excel`函数读取Excel数据,并展示了读取特定工作表、查看数据以及计算平均值等操作。此外,还介绍了选择特定列、筛选数据和数据清洗等常用操作。`pandas`是一个强大且易用的工具,适用于日常数据处理工作。
|
2天前
|
安全 数据安全/隐私保护 Python
情书也能加密?Python AES&RSA,让每一份数据都充满爱的密码
【9月更文挑战第8天】在这个数字化时代,情书不再局限于纸笔,也可能以电子形式在网络中传递。为了确保其安全,Python提供了AES和RSA等加密工具,为情书编织爱的密码。首先,通过安装pycryptodome库,我们可以利用AES对称加密算法高效保护数据;接着,使用RSA非对称加密算法加密AES密钥和IV,进一步增强安全性。即使情书被截获,没有正确密钥也无法解读内容。让我们用Python为爱情编织一张安全的网,守护每份珍贵情感。
13 2
|
11天前
|
算法 Python
Python 中的数据抽象
【8月更文挑战第29天】
23 11
|
9天前
|
数据采集 JavaScript 前端开发
构建简易Python爬虫:抓取网页数据入门指南
【8月更文挑战第31天】在数字信息的时代,数据抓取成为获取网络资源的重要手段。本文将引导你通过Python编写一个简单的网页爬虫,从零基础到实现数据抓取的全过程。我们将一起探索如何利用Python的requests库进行网络请求,使用BeautifulSoup库解析HTML文档,并最终提取出有价值的数据。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开数据抓取的大门。
|
11天前
|
JSON 数据格式 Python
Python快速获取国内最新放假安排数据
Python快速获取国内最新放假安排数据
下一篇
DDNS