二叉树的前序遍历、中序遍历、后序遍历、层序遍历

二叉树及完全二叉树的前序遍历、中序遍历、后序遍历及层序遍历 本期主要分享的是树形结构的基本概念,树型结构中完全二叉树的创建以及二叉树的一些基本操作,其中主要包括了二叉树的创建,销毁以及二叉树的前序遍历中序遍历及后序遍历,主要用到的思想的函数递归思想,希望小伙伴们一定要注意基础知识的重要性,不能急于求成;加油小伙伴们! 阅读详情
1.节点定义
public class TreeNode {
    public int val;
    public TreeNode left;
    public TreeNode right;


    public TreeNode(int val) {
        this.val = val;
    }

    public TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}
2.中序遍历

左-根-右

public static void printTreeInOrder(TreeNode root) {
    if (root == null) {
        return;
    }
    if (root.left != null) {
        printTreeInOrder(root.left);
    }
    System.out.print(root.val + "\t");
    if (root.right != null) {
        printTreeInOrder(root.right);
    }
}
3.先序遍历

根-左-右

public static void printTreePreOrder(TreeNode root) {
    if (root == null) {
        return;
    }
    System.out.print(root.val + "\t");
    if (root.left != null) {
        printTreePreOrder(root.left);
    }
    if (root.right != null) {
        printTreePreOrder(root.right);
    }
}
4.后序遍历

左-右-根

public static void printTreePostOrder(TreeNode root) {
    if (root == null) {
        return;
    }
    if (root.left != null) {
        printTreePostOrder(root.left);
    }
    if (root.right != null) {
        printTreePostOrder(root.right);
    }
    System.out.print(root.val + "\t");

}
5.层序遍历

利用队列

public static void printTreeLevelOrder(TreeNode root) {
    LinkedList<TreeNode> queue = new LinkedList<>();
    queue.offer(root);
    while (!queue.isEmpty()) {
        TreeNode current = queue.poll();
        System.out.print(current.val + "\t");
        if (current.left != null) {
            queue.offer(current.left);
        }
        if (current.right != null) {
            queue.offer(current.right);
        }
    }
    System.out.println();
}
C++ | 二叉树前序、中序、后序遍历的递归和非递归实现 +层序遍历+深度优先遍历 二叉树的遍历是学习二叉树最基本却极为重要的一环。当你熟练掌握二叉树的遍历之后,你会发现很多题目都是建立在遍历的基础上来解决的, 阅读详情

相关推荐

C++实现二叉树(二叉链表)前序,中序,后序,层序遍历

若不为空,则将二叉树的根节点入队,然后开始队列不为空的判断,在此判断(循环)中:输出此结点,并对他的左右子树进行判断,左右子树不为空则进入队列,为空则直接跳过,最后再将遍历过的结点出队,这样一次判断(循环)便完成了。设二叉树中的结点均为一个字符,假设扩展二叉树的前序遍历序列有键盘输入,root为指向跟结点的指针,二叉链表的建立过程是:首先输入根节点,若输入的是一个“#”字符,则表明该二叉树为空树,也就是root=NULL;的语句顺序是:输出根节点,访问左子树,访问右子树;遍历,结果为:DGBAECF;

weixin_73754150的博客 2464

二叉树相关

二叉树遍历 定义二叉树结构 package com.vleus.algorithm.binary_tree; /** * @author vleus * @date 2021年05月25日 22:53 */ public class TreeNode { int val; TreeNode left; TreeNode right; public TreeNode() { } public TreeNode(int val) {

行无所至,学无所尽。 168

二叉树的前序、中序、后序、层序遍历,递归和迭代两大类解题思路,每类细分不同解法【完整版】附PDF文档

一、二叉树的前序遍历 二叉树的前序遍历的记忆法则是“根左右",即先遍历根节点,再遍历左子树节点,再遍历右子树节点。 以上图为例,前序遍历的结果是【A, B, D, E, C, F, G】 1.1 解题思路:递归 递归是我们实现前中后序遍历最常用的方法。 什么问题可以采用递归求解呢? 需要满足三个条件: 一个问题的解可以分解为若干个子问题的解; 这个问题与分解的子问题,除了数据规模不同外,求解思路相同 存在递归终止条件。 那么在知道一个问题可以采用递归实现之后,如何写出递归代码呢? 关键在于能写出递归

CV前沿 5953

学习二叉树之SpringCloud+Spring Boot+Mybatis+ElementUI 大型企业分布式微服务云架构源码

前言 树是数据结构中的重中之重,尤其以各类 二叉树为学习的难点。一直以来,对于树的掌握都是模棱两可的状态,现在希望通过写一个关于二叉树的专题系列。在学习与总结的同时更加深入的了解掌握二叉树。本系列文章将着重介绍一般二叉树、完全二叉树、满二叉树、线索二叉树、霍夫曼树、二叉排序树、平衡二叉树、红黑树、B树。希望各位读者能够关注专题,并给出相应意见,通过系列的学习做到心中有“树”。1 重点概念 1.1 结点概念 结点是数据结构中的基础,是构成复杂数据结构的基本组成单位。1.2 树结点声明 本系列文章中提及的结点专

m0_61571842的博客 208

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4371

【医学影像】Deep Learning for Automatic Pneumonia Detection

写在前面的话: 这篇论文是北美放射学会(RSNA)在Kaggle平台上托管的肺炎区域检测挑战赛取得第二名成绩的解决方案。因为笔者需要用到其中的图像增强方案,因此本篇博客只介绍了数据集和图像增强,关于模型的改进和其它改进点没有涉及。 论文地址:https://arxiv.org/abs/2005.13899 代码地址:https://github.com/tatigabru/kaggle-rsna 比赛地址:https://www.kaggle.com/c/rsna-pneumonia-detection-c

chenzhoujian_的博客 1567

SpringBoot入门系列篇(七):SpringBoot中使用Filter

前情提要 web开发使用Controller基本能解决大部分的需求,但是有时候我们也需要使用Filter,因为相对于拦截和监听来说,有时候原生的还是比较好用的,现在就来简单的在SpringBoot中使用这些特殊类吧 好吧,上面这句话是复制粘贴前面的使用Servlet文章的前情提要,懒得写了,直接进入正题吧 使用Filter实例 在SpringBoot中使用Filter也有两

qq_27905183的博客 2万+

FinRL实战:5步搞定股票量化交易策略(附Python代码)

本文详细介绍了如何使用FinRL框架,通过5个步骤构建基于深度强化学习的股票量化交易策略。内容涵盖从环境搭建、数据获取与预处理,到交易环境构建、模型训练(如PPO算法),以及策略回测评估与优化的完整流程,并提供了可运行的Python代码示例,帮助读者快速入门AI驱动的量化交易。

weixin_29062865的博客 627

数据结构——二叉树的四种遍历方式【前序遍历-中序遍历-后序遍历-层序遍历】

目录: 一:定义 二:二叉树的遍历方式【左-右】 1.前序遍历 图形化介绍: 2.中序遍历 图形化介绍: 3.后序遍历 图形化介绍: 4.层序遍历 图形化介绍: 一:定义 是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次 二:二叉树的遍历方式【左-右】 二叉树的遍历方式有很多,如果我们限制了从左到右的习惯方式,那么主...

刘鑫磊 1万+

Megatron单机多卡Qwen2.5:pre-train+sft

英伟达:https://github.com/NVIDIA/Megatron-LM/releases/tag/core_r0.8.0阿里:https://github.com/alibaba/Pai-Megatron-Patch/releases/tag/v0.10.2。

weixin_46873015的博客 2179

VizCut 全自动批量视频二次去重处理!支持视频无水印解析下载和批量剪辑,完全免费,使用简单!

可制作和分享剪辑模板,已提供20+种剪辑方案,内置众多扫光蒙版素材。支持二次去重批量处理,完全免费,无广告,且支持视频无水印解析下载,非常强大。如果说我们处理的视频需要进行一样的参数设置的话,就可以把我,1设置的参数设置为模板,后面就可以一键调用。1. 本地CPU处理,可设置线程数,可开启GPU加速,无任何限制,全看机器性能。适用场景:自媒体搬运、短视频二创、批量去重等,完全免费,无广告干扰!3. 20+种参数可调可选,内置很多相关素材。可保存为模板,可复用、可分享、可导入。2. 所有参数的设置,

goodfat的博客 5322

【数据结构】二叉树的前序遍历、中序遍历、后序遍历、层序遍历

二叉树的遍历是学习二叉树首先要会的,这里从深度优先遍历(前、中、后序)和广度优先遍历(层序)两方面来详细解释如何遍历二叉树,深度优先遍历使用递归方法。

m0_65679465的博客 8705

保姆级教程:用STM32CubeMX配置GD32的CAN总线(含异常处理)

本文提供了一份详细的STM32CubeMX配置GD32 CAN总线开发指南,涵盖从HAL库移植到异常处理的全过程。重点解析GD32与STM32在CAN总线初始化、报文发送优先级处理等方面的关键差异,并提供优化代码维护与版本控制的实用策略,帮助开发者高效完成项目迁移。

onion的博客 830

二叉树的四种遍历方式(前序遍历、中序遍历、后序遍历、测层序遍历)

二叉树的遍历 遍历是数据结构中的常见的操作,把所有元素都访问一遍。 线性数据结构的遍历比较简单 ①、正序遍历 ②、逆序遍历 根据节点访问顺序的不同,二叉树的常见遍历方式用四种 ①、前序遍历(Preorder Traversal) ②、中序遍历(Inorder Traversal) ③、后序遍历(Postorder Traversal) ④、层序遍历(Level Order Traversal) 前序遍历(Preorder Traversal) 访问顺序 根节点、前序遍历左子树、前序遍历右子

派拉斯兔子的博客 8412

程序员应用AI大模型创业实现财务自由的100种赚钱方案原理与实战指南

成功的 AI 创业者都遵循着 “技术 + 需求 + 变现” 的铁三角法则。记住:不是要做 “全能大模型”,而是成为某个垂直领域的 “AI 解决方案专家”。现在就开始行动:用周末 2 小时完成第一个 MVP,下周启动种子用户测试,三个月内找到可复制的盈利模式。当你实现第一个 10 万用户时,会发现财务自由的密码藏在持续迭代的每个 0.1 版本更新中。延伸思考:你的技术背景适合切入哪个细分领域?

AI天才研究院 1380

七天征服AutoSAR/SomeIP_04理解SoAD_LdCom_SD模块

本文深入解析了AUTOSAR平台下SOME/IP协议栈的架构设计与模块交互逻辑。重点剖析了SD模块(服务发现)和LdCom模块(通信适配层)与SoAD(Socket适配层)之间的复杂关联关系。文章通过详细配置表格和代码示例,阐述了服务注册发现机制、PDU路由控制策略、数据收发流程等核心功能,并形象地将三模块关系类比为"三极管结构"。特别强调了SD模块通过RoutingGroup实现通信路径的动态开关控制,以及LdCom模块在协议栈中的透传转发作用,帮助开发者理解配置规则背后的底层原理,提

大叔带刺的博客 199

二叉树的遍历|前序、中序、后序、层序遍历

文章目录6.8 遍历二叉树6.8.1 二叉树遍历原理6.8.2 二叉树遍历方法1.前序遍历2.中序遍历3.后序遍历4.层序遍历6.8.3 前序遍历算法6.8.4 中序遍历算法6.8.5 后序遍历算法6.8.6 推导遍历结果 6.8 遍历二叉树 6.8.1 二叉树遍历原理 假设,我手头有20张100元的和2000张1元的奖券,同时洒向了空中,大家比赛看谁最终捡的最多。如果是你,你会怎么做? 相信所有同学都会说,一定先捡100元的。道理非常简单,因为捡一张100元等于1元的捡100张,效率好得不是一点点。所以可

有出路CodingTime 5560

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

二叉树的前序、中序、后序、层序遍历,Java实现(递归、非递归)

关于二叉树的内容,我觉得二叉树最核心的地方就是它的几种遍历方式,基本上所有的问题都是围绕着几种遍历方式来的。因此就在这总结一下这几种遍历方式。 前序遍历 一、简介 前序遍历(DLR),是二叉树遍历的一种,也叫做先根遍历、先序遍历,可记做根左右。 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。 若二叉树为空则结束返回,否则...

丸啊~ 6916

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

二叉树的创建及前序、中序、后序、层序遍历

二叉树1.建立二叉树1.先序中序遍历建立二叉树: 二叉树前序遍历序列中,第一个元素总是树的根节点的值。中序遍历序列中,左子树的节点的值位于根节点的值的左边,右子树的节点的值位于根节点的值的右边。 递归解法: (1)如果前序遍历为空或中序遍历为空或节点个数小于等于0,返回NULL。 (2)创建根节点。前序遍历的第一个数据就是根节点的数据,在中序遍历中找到根节点的位置,可分别得知左子树和右子树

leumber的专栏 2541

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

二叉树的遍历 前序遍历 中序遍历 后序遍历 层序遍历

目录 1.前序遍历 2.中序遍历 3.后序遍历 4.层序遍历 二叉树的遍历是指从根节点出发, 按照某种次序依次访问二叉树中所有结点, 使得每个结点被访问一次且仅被访问一次。二叉树的遍历方式很多,如果我们限制了从左到右的习惯方式,那么主要就分为四种: 1.前序遍历 前序遍历的规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。如图所示的二叉树遍历的...

qq_41078889的博客 1529

二叉树的前序遍历,二叉树的中序遍历,二叉树的后序遍历,二叉树的层序遍历

144. 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com)思路:非常简单的一题,运用递归就能解决。定义一个函数,因为是求前序遍历,如果该树节点不为空,先将该树节点的数据域插入到vector的容器中,然后再分别递归左子树和右子树。 二叉树的中序遍历 94. 二叉树的中序遍历 - 力扣(LeetCode) (leetcode-cn.com) 二叉树的后序遍历 145. 二叉树的后序遍历 - 力扣(LeetCode) (leetcode-cn.com) 二叉树的层

qq_62767608的博客 1277

二叉树的遍历(前序遍历,中序遍历,后序,层序遍历)和一些简单操作(由浅入深绝对能看懂)

在二叉树中第i层的节点个数为高度为h的二叉树最多有多少个节点二叉树中;即度为0的节点个数等于度为二的节点个数加一高度为两个遍历确定一颗树。

ikuunnnn的博客 1534

二叉树——前序遍历、中序遍历、后序遍历、层序遍历详解(递归非递归)

前言 前面介绍了二叉排序树的构造和基本方法的实现。但是排序遍历也是比较重要的一环。所以笔者将前中后序.和层序遍历梳理一遍。 了解树的遍历,需要具有的只是储备有队列,递归,和栈。这里笔者都有进行过详细介绍,可以关注笔者数据结构与算法专栏。持续分享,共同学习。 层序遍历 层序遍历。听名字也知道是按层遍历。我们知道一个节点有左右节点。而每一层一层的遍...

bamiaochou2245的博客 1254

二叉树遍历方法详解:层序遍历、前序遍历、中序遍历和后序遍历

首先,我们定义一个二叉树节点类TreeNode,用于表示二叉树中的每个节点。该类包含节点值、左子节点和右子节点的引用。int val;@Override。

www_tlj的专栏 1946

二叉树的前序遍历,中序遍历,后序遍历和层序遍历

【前序遍历】如果二叉树为空,则直接返回。否则,先访问根结点,再递归前序遍历左子树,再递归前序遍历右子树。【中序遍历】如果二叉树为空,则直接返回。否则,先递归中序遍历左子树,再访问根结点,再递归中序遍历右子树。层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据。(即逐层地,从左到右访问所有节点)。给定一个二叉树的根节点。给你一棵二叉树的根节点。

Doctor_Anonymous的博客 1089

二叉树的前序遍历、中序遍历、后序遍历以及层序遍历的 Java 实现

树的节点定义如下 package traversal; public class TreeNode&amp;lt;T&amp;gt; { public T value; public TreeNode&amp;lt;T&amp;gt; left; public TreeNode&amp;lt;T&amp;gt; right; public TreeNode(T value) { this.v

Sorel的博客 1086
上一篇: Leetcode NO.56 Merge Intervals 合并区间
下一篇: Leetcode NO.226 Invert Binary Tree 翻转二叉树
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值