python数据结构基础(8)

ops/2024/11/14 0:23:08/

今天来使用python实现二叉树,二叉树中每个节点都是Node类对象,通过Tree类中的add()方法逐个向二叉树中加入树节点,构成完全二叉树或者非完全二叉树,代码如下:

python">class Node(object):"""树节点类,用于构建二叉树。Attributes:- val: 节点存储的值。- right: 右子节点的引用。- left: 左子节点的引用。"""def __init__(self, val=None, right=None, left=None):self.val = val  # 初始化节点值self.left = left  # 初始化左子节点为Noneself.right = right  # 初始化右子节点为Noneclass Tree(object):"""树类,用于管理二叉树。Attributes:- root: 树的根节点。"""def __init__(self, node=None):self.root = node  # 初始化树的根节点为None或传入的节点def add(self, item=None):"""向树中添加一个新的节点。Args:- item: 新节点的值。"""node = Node(val=item)  # 创建一个新的节点if not self.root or self.root.val is None:  # 如果树为空或根节点值为Noneself.root = node  # 将新节点设置为根节点else:queue = []  # 使用队列来实现层序遍历queue.append(self.root)  # 将根节点加入队列while True:  # 循环直到找到合适的插入位置current_node = queue.pop(0)  # 从队列中取出一个节点if current_node.val is None:  # 如果当前节点值为None,跳过continueif not current_node.left:  # 如果当前节点的左子节点为空current_node.left = node  # 将新节点设置为左子节点return  # 返回,结束添加操作elif not current_node.right:  # 如果当前节点的右子节点为空current_node.right = node  # 将新节点设置为右子节点return  # 返回,结束添加操作else:  # 如果当前节点的左右子节点都不为空queue.append(current_node.left)  # 将左子节点加入队列queue.append(current_node.right)  # 将右子节点加入队列

接下来使用自定义二叉树类,将得到一棵二叉树:

python">tree = Tree()
for i in range(10):if i == 3:i = Nonetree.add(i)


http://www.ppmy.cn/ops/132449.html

相关文章

Xilinx FPGA的Vivado开发流程

Xilinx FPGA 的 Vivado 开发流程主要包括以下步骤: 创建工程: 启动 Vivado 软件:双击 Vivado 图标打开软件。新建工程向导:在 Quick Start 中选择 Create Project,打开新建工程向导。设置工程信息: 工程名称…

Flink安装和Flink CDC实现数据同步

一,Flink 和Flink CDC 1, Flink Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。 中文文档 Apache Flink Documentation | Apache Flink 官方文档 :https://flink.apache.org Flink 中文社区…

微服务设计模式 - 事件溯源模式(Event Sourcing Pattern)

微服务设计模式 - 事件溯源模式(Event Sourcing Pattern) 定义 事件溯源(Event Sourcing)是一种将所有状态更改保存为一系列事件的设计模式。每次系统状态发生变化时,都会生成一个事件,这些事件在事件存储…

【数据结构-合法括号字符串】力扣678. 有效的括号字符串

给你一个只包含三种字符的字符串,支持的字符类型分别是 ‘(’、‘)’ 和 ‘*’。请你检验这个字符串是否为有效字符串,如果是 有效 字符串返回 true 。 有效 字符串符合如下规则: 任何左括号 ‘(’ 必须有相应的右括号 ‘)’。 任何右括号 …

ElasticSearch从环境搭建到如何使用的全过程

ES是什么? ES是一款非常强大的开源的高扩展的分布式全文检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的存储、检索数据。还可以实现日志统计、分析、系统监控等功能。 例如京东、淘宝、头条等站内搜索功能 在大数据环境下,Elasticsearc…

ssm079基于SSM框架云趣科技客户管理系统+jsp(论文+源码)_kaic

毕 业 设 计(论 文) 题目:客户管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本客户管理系统就是在这…

OpenCV进阶

OpenCV 进阶教程:从基础到深度学习应用 引言 OpenCV(Open Source Computer Vision Library)作为计算机视觉领域的开源工具库,广泛应用于实时图像处理、视频分析、物体检测等多个领域。在初步掌握了 OpenCV 的基础功能后&#xf…

探索 Python 的新边疆:sh 库的革命性功能

文章目录 **探索 Python 的新边疆:sh 库的革命性功能**第一部分:背景介绍第二部分:sh 库是什么?第三部分:如何安装 sh 库?第四部分:简单库函数使用方法1. 执行 ls 命令2. 使用 grep 搜索文件内容…