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,一经查实,立即删除!

相关文章

触摸屏响应速度性能分析

1 前言2 触摸屏的响应速度分为几个阶段去优化3 举例:Rockchip平台 3.1 分析3.2 总结:所以阶段3耗时:439.251402-439.249389=2.1ms4示波器测试 4.1 阶段14.2 阶段2,阶段35 代码测试6 原文链接1 前言 上一篇文章介绍了Android Input子系统,Touchscreen是典型的输入设备,有…

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

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

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

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

gcc c语言编译流程

1前言 最近群里讨论个C语言的小程序,看起来都不是很难,但是大家对答案有争论,所以想讨论编译原理,做嵌入式要对编译原理有一定的了解,所以转了这篇文章。 我们之前讨论的问题如下代码 #include #include #define WEIQIFA 0;int main(void) { int i = WEIQIFA; …

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

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

交换两个整型变量的数值

#include<stdio.h>#include<conio.h> main(){ void swap(int *p1,int *p2);//定义一个函数作用是交换两个整型变量的数值 int x,y;//定义整型变量x&#xff0c;y int *a1,*a2;//定义整型指针a1&#xff0c;a2 printf("任意输入两个数值&#xff1a;")…

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

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

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

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

串口UART串行总线协议

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

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

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

HTML5本地图片裁剪并上传

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

python成员运算符包括_Python 使用成员运算符案例

什么是操作符&#xff1f; 简单的回答可以使用表达式4 5等于9&#xff0c;在这里4和5被称为操作数&#xff0c;被称为操符。 Python语言支持操作者有以下几种类型。 算术运算符 比较(即关系)运算符 赋值运算符 逻辑运算符 位运算符 会员操作符 标识操作符 下面简单介绍一下&am…

嵌入式就应该这样学!!

嵌入式就应该这样学&#xff01;&#xff01; 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 直接导入到数据库中, …

写给准备参加秋招的学弟学妹们~一定要来看哦~

一. 写在前面 这两天找工作不易&#xff0c;由衷感慨&#xff0c;很多书都没早看&#xff0c;所以希望学弟学妹们能多看点书&#xff0c;特别是我们qtech的ACMer们&#xff0c;我们这种acm弱校的ACMer走出来的&#xff0c;acm水平都不行&#xff0c;如果再像我当年那样&#x…

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…

python写xml文件_用python写xml文件

def writeInfoToXml(filename, config_id, obj_name): from xml.dom.minidom import Documenteg:Web ServersDenial of ServiceGeneral # 创建dom文档 doc Document() # 创建根节点 modify_node doc.createElement(modify_config) # 修改或添加节点中元素内容 modify_node.se…

基于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大小。 对…