二叉树的四种遍历方式

二叉树的遍历

  • 二叉树常见的遍历方式有层序遍历,前序遍历,中序遍历,后序遍历

层序遍历

从顶部到底部,逐层进行遍历,且每一层按照从左到右的顺序遍历

层序遍历本质上是广度优先遍历(BFS)

代码实现

广度优先遍历一般使用队列来实现

/* 层序遍历 */
vector<int> levelOrder(TreeNode *root) {// 初始化队列,加入根节点queue<TreeNode *> queue;queue.push(root);// 初始化一个列表,用于保存遍历序列vector<int> vec;while (!queue.empty()) {TreeNode *node = queue.front();queue.pop();              // 队列出队vec.push_back(node->val); // 保存节点值if (node->left != nullptr)queue.push(node->left); // 左子节点入队if (node->right != nullptr)queue.push(node->right); // 右子节点入队}return vec;
}
//递归思想
/* 前序遍历 */
void preOrder(TreeNode *root) {if (root == nullptr)return;// 访问优先级:根节点 -> 左子树 -> 右子树vec.push_back(root->val);preOrder(root->left);preOrder(root->right);
}/* 中序遍历 */
void inOrder(TreeNode *root) {if (root == nullptr)return;// 访问优先级:左子树 -> 根节点 -> 右子树inOrder(root->left);vec.push_back(root->val);inOrder(root->right);
}/* 后序遍历 */
void postOrder(TreeNode *root) {if (root == nullptr)return;// 访问优先级:左子树 -> 右子树 -> 根节点postOrder(root->left);postOrder(root->right);vec.push_back(root->val);
}

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

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

相关文章

AI教我学编程之C#类的基本概念(1)

前言 在AI教我学编程之C#类型 中&#xff0c;我们学习了C#类型的的基础知识&#xff0c;而类正是类型的一种. 目录 区分类和类型 什么是类&#xff1f; 什么是类型&#xff1f; 追问 实操 总结 区分类和类型 在 C# 中&#xff0c;类是类型的一种。C# 是一种面向对象的编程…

js 数组内置的方法

JavaScript中数组内置了许多有用的方法&#xff0c;可以方便地操作和处理数组。以下是一些常用的数组方法&#xff1a; push()&#xff1a;向数组末尾添加一个或多个元素&#xff0c;并返回新数组的长度。pop()&#xff1a;移除数组末尾的元素&#xff0c;并返回被移除的元素。…

uniapp如何调用ANDROID原生函数

在 UniApp 中调用 Android 原生函数&#xff0c;通常需要使用 UniApp 的插件系统。以下是调用 Android 原生函数的一般步骤&#xff1a; 安装插件&#xff1a;首先&#xff0c;确保你已经安装了对应的插件。你可以在 UniApp 插件市场 中搜索并安装你需要的插件。对于 Android 原…

利用XSS漏洞打cookie

目录 1、为什么要打cookie&#xff1f; 2、怎样利用XSS来打cookie&#xff1f; 3、利用Bluelotus_xssReceiver平台来打cookie 4、利用beef-xss平台来打cookie 上一篇给大家介绍了xss漏洞的基础知识&#xff0c;在本篇章将会介绍和演示一下利用xss漏洞打cookie的演示&#x…

复习回顾、静态、继承、引用类型使用

今日内容 复习回顾 定义类。一个Java文件可以定义多个类。但是只有一个类是用public修饰&#xff0c;public修饰的类名必须称为Java文件名。类中有且仅有5大成分&#xff08;五大金刚&#xff09; 成员变量Field&#xff1a;描述类或者对象的属性信息的。成员方法Method&#…

DAY8--learning english

一、积累 1.haunt Why Ghost dont haunt chinese. 为什么鬼不会出现在中国人旁边? 2.confess i have a confession to make ... I actally a blind. 我要坦白一件事……我其实是个盲人。 3.brake Press S button to brake, or to reverse if the vehicle has stopped, 按住…

Spring MVC中的常用注解及其用法

文章目录 一、建立连接二、接收请求2.1请求中带有一个参数2.2请求中带有多个参数2.3用对象接收请求中的参数2.4对请求中的参数进行重命名2.5请求参数中带有数组2.6请求参数中带有集合2.7json字符串和Java对象互转2.8前端传递json数据给后端、json数据在请求正文中、后端接收jso…

【时事篇-04】兔子繁殖问题(斐波那契数列)

兔子繁殖问题monthinput("请输入月份:") if month.isdigit():monthint(month)a0b1for i in range(month-1):a,bb,abprint("%d月份以后兔子有%d对"%(month,b)) else:print("输入有误请重新输入")

android.os.NetworkOnMainThreadException

问题 android.os.NetworkOnMainThreadException详细问题 核心代码如下&#xff1a; import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ja…

30 3D导航栏

效果演示 实现了一个导航栏&#xff0c;其中包含了五个图标&#xff0c;每个图标都有一个悬浮的文字标签&#xff0c;当鼠标悬停在图标上时&#xff0c;文字标签会旋转并向上移动&#xff0c;同时底部会出现一个阴影效果。整个导航栏的背景颜色为浅灰色。 Code <ul><…

python 字典的基础及应用

当前版本&#xff1a; Python 3.8.4 简介 字典是一种无序的、可变的、键值对的数据结构。通常用于存储键值对&#xff0c;其中键是唯一的&#xff0c;值可以是任何类型的对象。它可以快速查找和访问数据&#xff0c;关联相互有关的信息&#xff0c;灵活地添加、修改和删除数据…

QT+OSG/osgEarth编译之七十六:glsl+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_glsl)

目录 1、osgdb_glsl介绍 2、文件分析 3、pro文件 4、编译实践 1、osgdb_glsl介绍 通过osgdb_glsl,osg能方便地读取glsl着色语言,从而为三维场景的渲染提供支撑。 GLSL(OpenGL Shadi

Day03

今日任务 链表理论基础203.移除链表元素707.设计链表206.反转链表 链表理论基础 1&#xff09;单链表 单链表中的指针域只能指向节点的下一个节点 2&#xff09;双链表 双链表&#xff1a;每一个节点有两个指针域&#xff0c;一个指向下一个节点&#xff0c;一个指向上一个…

k8s云原生环境搭建笔记——第二篇

目录 1、使用普通方式安装prometheus和grafana1.1、安装kube-state-metrics容器1.1.1、下载并修改yaml文件1.1.2、导入kube-state-metrics镜像1.1.3、执行yaml文件目录 1.2、安装node-exploer1.2.1、创建名称空间prometheus1.2.2、执行yaml 1.3、安装prometheus1.3.1、创建集群…

QT上位机开发(动画效果)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 不管是仿真&#xff0c;还是对真实环境的一比一模拟&#xff0c;动画都是非常好的一种呈现方式。目前在qt上面&#xff0c;实现动画主要有两种方法…

js(JavaScript)数据结构之堆(Heap)

什么是数据结构&#xff1f; 下面是维基百科的解释&#xff1a; 数据结构是计算机存储、组织数据的方式。数据结构意味着接口或封装&#xff1a;一个数据结构可被视为两个函数之间的接口&#xff0c;或者是由数据类型联合组成的存储内容的访问方法封装。 我们每天的编码中都会…

Linux scp命令 服务器之间通讯

目录 一. scp命令简介二. 本地服务器文件传输到远程服务器三. 本地服务器文件夹传输到远程服务器 一. scp命令简介 scp&#xff08;Secure Copy Protocol&#xff09;是用于在Unix或Linux系统之间安全地复制文件或目录的命令。 它使用SSH&#xff08;Secure Shell&#xff09;…

Java基础-OJ

Java基础-OJ Java面向对象程序设计OJ题目 目录 Java基础-OJJava基础-回文数Java基础-计算奇数和Java基础-计算素数Java基础-设计分段函数Java数组-歌手打分Java数组-实现冒泡排序Java继承-类的继承Java类的组合-类的组合Java类及对象-类方法使用Java面向对象-编写汽车类Java面向…

如何通过Burp Suite专业版构建CSRF PoC

Burp Suite是一款强大的渗透测试利器&#xff0c;可以利用它来高效的执行渗透攻击&#xff0c;接下来介绍如何通过Burp Suite Pro来构建CSRF PoC。 在Bupr中找到拦截的请求&#xff0c;右键选择Engagement tools > Generate CSRF PoC 利用CSRF PoC生成器自动生成HTML <h…

MOJO语言的诞生

文章目录 背景目标现状 背景 传统的编译器技术如LLVM和GCC并不适合现有深度学习编程语言的发展迭代&#xff0c;无法完全支持现代芯片架构。如今&#xff0c;专用机器学习加速器的标准技术是MLIR。MLIR是一个相对较新的开源编译器基础架构&#xff0c;最初由Google&#xff08…