tinyxml2遍历所有节点_Python实现二叉树的遍历

3caf342f438202c303d9823e51191825.png

Outline:

  1. 二叉树概念
  2. 二叉树遍历(前序、中序、后序、宽度优先遍历)的迭代实现和递归实现;
  3. 二叉树的深度,二叉树到leaf的所有路径。

树(Tree)

是一种抽象数据类型(ADT),是由n(n>=0)个有限节点来模拟的一个具有树状结构性质的数据集合。

二叉树 Binary Tree

  • 至少有一个节点(根节点)
  • 每个节点最多有2棵子树(左右子树)(即每个节点的度小于3)
  • 左子树和右子树是有顺序的,次序不能任意颠倒。
  • 即使树中某节点只有一棵子树,也要区分它是左子树还是右子树。

Python定义二叉树类:

Class 

二叉树分类:

  • 满二叉树
  • 完全二叉树
  • 二叉查找树(Binary Search Tree - BST

二叉查找树

root node的值(5),大于其left subtree中任意一个节点的值,小于其right subtree中任意一节点的值。

【说人话】:以root节点为界,小于root节点的值保存在left节点,大于root节点的值保存在right节点。

ff94dc3992f65f3b8da08701bb5fb763.png
  • 任意节点的左、右子树也分别为二叉查找树;
  • 没有键值相等的节点

A binary search tree (BST) is a form of rooted binary tree.

Each node within a binary tree has an associated payload and references to the root node of any right or left subtrees at that point.

Any payload contained within any left subtree must be less than the value of the payload of node N and, conversely, that any payload contained within any right subtree must exceed the value of the payload of node N.


二叉树遍历

二叉树的遍历:

  • 深度优先(DFS: Depth-First Search)
  • 宽度优先(BFS: Breadth-First Search)

其中深度优先遍历又分为:

  • 前序遍历:-左-右
  • 中序遍历:左--右
  • 后序遍历:左-右-

前序遍历root-left-right: 5-3-2-4-7-6

递归

def 

中序遍历:left-root-right : 2-3-4-5-7-6

递归

def 

后序遍历left-right-root: 2-4-3-6-7-5

递归

def 

宽度优先遍历(BFS):自顶向下: 5-3-7-2-4-6

迭代

def 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何监控NVIDIA Jetson的的运行状态和使用情况

一、NVIDIA Jetson介绍 NVIDIA Jetson是NVIDIA为新一代自主机器设计的嵌入式系统,是一个AI平台,所提供的性能和能效可提高自主机器软件的运行速度。每个系统都是一个完备的模块化系统,具备CPU、GPU、PMIC、DRAM和闪存。Jetson具备可扩展性&a…

atm取款机的简单程序代码_LeNet:一个简单的卷积神经网络PyTorch实现

前两篇文章分别介绍了卷积层和池化层,卷积和池化是卷积神经网络必备的两大基础。本文我们将介绍一个早期用来识别手写数字图像的卷积神经网络:LeNet[1]。LeNet名字来源于论文的第一作者Yann LeCun。1989年,LeNet使用卷积神经网络和梯度下降法…

【数据集转换】VOC数据集转COCO数据集·代码实现+操作步骤

在自己的数据集上实验时,往往需要将VOC数据集转化为coco数据集,因为这种需求所以才记录这篇文章,代码出处未知,感谢开源。 在远程服务器上测试目标检测算法需要用到测试集,最常用的是coco2014/2017和voc07/12数据集。 …

idea spring tomcat启动失败_技术篇 | 实用IDEA插件和工具系列

前 言本章主要分享一些工作中常用的IDEA插件(Maven Helper、Lombok、Mybatis Log Plugin、RestfulToolkit、JRebel And XRebel)和实用工具arthas。01Maven Helper作用:能清晰的查看当项目的Maven依赖版本、依赖关系、依赖冲突等情况。使用步骤:①安装后,…

【数据集可视化】VOC数据集标注可视化+代码实现

二、VOC可视化数据集 1、作用 在做目标检测时,首先要检查标注数据。一方面是要了解标注的情况,另一方面是检查数据集的标注和格式是否正确,只有正确的情况下才能进行下一步的训练。 2、代码实现 import os # import sys import cv2 import…

串口UART串行总线协议

串口UART 串行端口是异步的(不传输时钟相关数据),两个设备在使用串口通信时,必须先约定一个数据传输速率,并且这两个设备各自的时钟频率必须与这个速率保持相近,某一方的时钟频率相差很大都会导致数据传输…

基于Springboot外卖系统01:技术构成+功能模块介绍

外卖系统是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括 系统管理后台 和 移动端应用 两部分。其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护。移动端应用主要…

HTML5本地图片裁剪并上传

最近做了一个项目,这个项目中需要实现的一个功能是:用户自定义头像(用户在本地选择一张图片,在本地将图片裁剪成满足系统要求尺寸的大小)。这个功能的需求是:头像最初剪切为一个正方形。如果选择的图片小于…

嵌入式就应该这样学!!

嵌入式就应该这样学!! 1、Linux内核 Linux 内核定时器 Linux进程上下文和中断上下文内核空间和用户空间 Linux内核链表 Linux 内核模块编译 Linux内核使用Gdb调试 Linux动态打印kernel日志 Linux的中断可以嵌套吗 Linux内核定时器 Linux 驱动之Ioctl Lin…

基于Springboot外卖系统02:数据库搭建+Maven仓库搭建

1 数据库环境搭建 1.1 创建数据库 可以通过以下两种方式中的任意一种, 来创建项目的数据库: 1).图形界面 注意: 本项目数据库的字符串, 选择 utf8mb4 2).命令行 1.2 数据库表导入 项目的数据库创建好了之后, 可以直接将 资料/数据模型/db_reggie.sql 直接导入到数据库中, …

margin 负边距应用

margin-right:负值&#xff0c;在没有设置DOM元素宽度的前提下&#xff0c;DOM元素宽度变宽。 1 <!DOCTYPE html>2 <html lang"zh-CN">3 4 <head>5 <meta charset"UTF-8">6 <meta http-equiv"X-UA-Co…

基于Springboot外卖系统03:pom.xml导入依赖+数据库配置文件+Boot启动类+静态资源映射

1).在pom.xml中导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

写给过得很辛苦很迷茫的你~一定要看啊

#前面的话 我是一个农村的孩子&#xff0c;我家很穷&#xff0c;小时候过得非常苦&#xff0c;每次开学是我最害怕的时候&#xff0c;我害怕我爸妈拿不出学费&#xff0c;我害怕我爸妈会让我辍学在家帮忙干活&#xff0c;每次跟我妈吵架的时候&#xff0c;当我妈跟我说不让我读…

flatpickr功能强大的日期时间选择器插件

flatpickr日期时间选择器支持移动手机&#xff0c;提供多种内置的主题效果&#xff0c;并且提供对中文的支持。它的特点还有&#xff1a; 使用SVG作为界面的图标。 兼容jQuery。 支持对各种日期格式的解析。 轻量级&#xff0c;高性能&#xff0c;压缩后的版本仅6K大小。 对…

基于Springboot外卖系统04:后台系统用户登录+登出功能

登录业务流程 ① 在登录页面输入用户名和密码 ② 调用后台接口进行验证 ③ 通过验证之后&#xff0c;根据后台的响应状态跳转到项目主页 2. 登录业务的相关技术点 http 是无状态的通过 cookie 在客户端记录状态通过 session 在服务器端记录状态通过 token 方式维持状态如果前端…

排序算法时间复杂度、空间复杂度、稳定性比较

排序算法分类 排序算法比较表格填空 排序算法平均时间复杂度最坏时间复杂度空间复杂度是否稳定冒泡排序:————-::—–::—–::—–:选择排序:————-::—–::—–::—–:直接插入排序:————-::—–::—–::—–:归并排序:————-::—–::—–::—–:快速排序:———…

基于Springboot外卖系统05:用户非登陆状态的页面拦截器实现

1. 完善登录功能 1.1 问题分析 用户访问接口验证&#xff0c;如果用户没有登录&#xff0c;则不让他访问除登录外的任何接口。 1.前端登录&#xff0c;后端创建session&#xff0c;返给前端 2.前端访问其他接口&#xff0c;失效或不存在&#xff0c;则返回失效提示&#xff…

python删除指定行_关于csv:删除python中的特定行和对应文件

我想删除90%的"转向"值等于0的行。这三个图像都有一个对应的图像文件&#xff0c;中间&#xff0c;左边和右边。我也要删除它们。csv文件如下&#xff1a;我编写了以下代码&#xff0c;以至少获取转向值为0的文件。我所需要的就是随机获取90%的文件并删除它们的代码。…

I2C总线传输协议

简介 I2C&#xff08;Inter-integrated Circuit&#xff09;总线支持设备之间的短距离通信&#xff0c;用于处理器和一些外围设备之间的接口&#xff0c;它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计并用于自己的芯片上&#xff0c;一开始只允许100kHz…

基于Springboot外卖系统06: 新增员工功能+全局异常处理器

2. 新增员工 2.1 需求分析 后台系统中可以管理员工信息&#xff0c;通过新增员工来添加后台系统用户。点击[添加员工]按钮跳转到新增页面&#xff0c;如下 当填写完表单信息, 点击"保存"按钮后, 会提交该表单的数据到服务端, 在服务端中需要接受数据, 然后将数据保…