算法通关:017_1:二叉树及三种顺序的递归遍历

news2025/1/21 21:56:55

文章目录

  • 题目
  • 思路
  • 代码
  • 运行结果

题目

二叉树及三种顺序的递归遍历

思路

在这里插入图片描述

代码

/**
 * @Author: ggdpzhk
 * @CreateTime: 2024-08-04
 *
 * 二叉树及三种顺序的递归遍历
 * LeetCode 144. 二叉树的前序遍历
 * LeetCode 94. 二叉树的中序遍历
 * LeetCode 145. 二叉树的后序遍历
 * LeetCode 102. 二叉树的层序遍历
 */
public class _017_Tree {

    public static void main(String[] args) {
        TreeNode head = new TreeNode(1);
        head.left = new TreeNode(2);
        head.right = new TreeNode(3);
        head.left.left = new TreeNode(4);
        head.left.right = new TreeNode(5);
        head.right.left = new TreeNode(6);
        head.right.right = new TreeNode(7);

        System.out.println("先序遍历递归版");
        preOrder(head);
        System.out.println();

        System.out.println("中序遍历递归版");
        inOrder(head);
        System.out.println();

        System.out.println("后序遍历递归版");
        postOrder(head);
        System.out.println();
    }

    public static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }
    //先序打印所有节点 递归版
    public static void preOrder(TreeNode head) {
         if (head == null) {
             return;
         }
        System.out.print(head.val + " ");//先遍历我自己
        preOrder(head.left);//再遍历左子树
        preOrder(head.right);//再遍历右子树
    }

    //中序打印所有节点,递归版
    public static void inOrder(TreeNode head) {
        if (head == null) {
            return;
        }
        inOrder(head.left);
        System.out.print(head.val+" ");//左树结束,回到我,打印我
        inOrder(head.right);
    }

    //后序打印所有节点,递归版
    public static void postOrder(TreeNode head) {
        if(head == null){
            return;
        }
        postOrder(head.left);
        postOrder(head.right);
        System.out.print(head.val+" ");//左树右树遍历结束,回到我,打印我
    }
}

运行结果

在这里插入图片描述

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

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

相关文章

sqli-labs靶场——第二关

1、判断注入类型 ?id1和?id2-1的页面一样所以是数字型 2、判断闭合类型 数字型没有闭合符号 3、order by查看有几列 当输入order by 4 时候页面变化,3的时候正常,所以是3列 4、union select联合查询查看回显 /sqli-labs/Less-2/?id-1 union sel…

ESP32使用MQTT协议通讯(EMQX)

一、背景介绍 前面完成了ESP32MicroPython环境的搭建01_ESP32 MicroPython开发环境搭建_eps32开发板-CSDN博客 现在想实现以下功能: 1.通过手机或电脑,远程给ESP32发送相关指令。 2.ESP32接到指令后,做出相应的高低电平输出。 这样就相当…

视频编辑SDK,底层架构合理,前端自定义程度高

如何高效、专业地制作出符合品牌形象、吸引目标受众的视频内容,成为了众多企业面临的共同挑战。美摄科技,作为视频编辑技术的先行者,以其卓越的视频编辑SDK(Software Development Kit),为企业用户量身打造了…

进程状态都有哪些?

目录 前言: 进程的各个状态: 1、R状态(进程运行状态)和S状态(休眠状态) 2、T状态和t状态(暂停进程) 3、D状态(磁盘休眠状态) 4、Z状态(僵尸状…

学习笔记 韩顺平 零基础30天学会Java(2024.8.2)

P447 五大运行时异常 P448 异常课堂练习 P449 异常处理机制 try-catch-finally throws(处理机制二选一),如果没有显式处理异常,默认throws JVM处理异常直接输出异常信息,退出程序 P450 tryCatch 对于第一个细节,发生异常之后时try…

C语言快速入门及精通学习指南——手把手教零基础/新手入门(完整C语言学习笔记整理)

前言 作为一名拥有多年开发经验的码农,我的职业生涯涵盖了多种编程语言,包括 C 语言、C、C# 和 JavaScript。在这一过程中,我深刻地意识到扎实的基础对于编程学习的重要性,尤其是对于 C 语言这样一门核心语言来说。 出于对…

sgg快餐项目-3 项目

一、数仓架构 本项目的数据是事务数据,都存储在mysql数据库,如果是其他的项目,那数据可能会在文本、爬虫等。要使用相关的组件将数据导入到HDFS上。(因为要把数据导入到hive做数据管理、存储和分析,而hive就是在hfds上…

2024年文件防泄密系统TOP3|遥遥领先的文件防泄密系统

古语有云:“密者,国之重器,不可不慎。” 在今日之数字化时代,信息的保密与安全,已然成为企业乃至国家生存与发展的基石。 随着数据泄露事件频发,文件防泄密系统的重要性愈发凸显。 2024年,随着…

数据存储与访问

一、文件存储读写 1.Android文件的操作模式 2.文件的相关操作方法 3.文件读写的实现 Android中的文件读写和Java中的文件I/O相同,流程也很简单,下面我们来写个简单的示例: PS:这里用的是模拟器,因为笔者的N5并没有root&#xf…

Go语言加Vue3零基础入门全栈班11 Go语言+gorm用户管理系统实战 2024年08月03日 课程笔记

概述 如果您没有Golang的基础,应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227GoRedis开发用户管理系统API实战_20240730Mo…

工业人工智能真的能落地吗?

文章目录 前言Part1 聊聊技术1 人工智能、机器学习和深度学习的关系2 优化思想的一个案例 part2 聊聊业务3 工业人工智能与消费互联网人工智能的区别3.1 消费互联网中人工智能的应用3.2 为什么如此成熟的消费互联网人工智能扩展到工业场景那么难 4 工业互联网人工智能的发展方向…

wxPython中wx.adv.DatePickerCtrl用法

wx.adv.DatePickerCtrl是一个日期选择组件,支持键盘手工录入日期和弹出日历窗口选择日期两种方式。 一、组件样式 wx.adv.DP_SPIN : 只允许键盘手工录入和组件右侧上下箭头调整日期。 wx.adv.DP_DROPDOWN : 只允许健盘手工录入和组件右侧打开…

CentOS7 编译ffmpeg wasm库

1. 安装 emscripten 1)克隆 emsdk git clone https://github.com/emscripten-core/emsdk.git 2)cd 到emsdk 3)安装,按照官网的步骤(Download and install — Emscripten 3.1.65-git (dev) documentation) 4)验证 注意:如果emcc -v 报错: 提示是python脚本错误,是因为…

Qt Modbus 寄存器读写实例

一.线圈状态寄存器读写 项目效果如下 1. 写单个寄存器 MODBUS_API int modbus_write_bit(modbus_t *ctx, int coil_addr, int status); int addrui->spinBoxwirte_addr->value();int dataui->spinBoxwirte_data->value();int ret modbus_write_bit(mb,addr,d…

【Qt】Qt日志信息处理

Qt日志信息处理 一、介绍二、相关函数的使用介绍1. qInstallMessageHandle2. QtMsgType3. QMessageLogContext 三、一个简单示例 一、介绍 Qt有Info、Debug、Warning、Critical、Fatal五种级别的调试信息。 Info: 提示信息qDebug:调试信息qWarning:警告…

目标检测——X光安检数据集

1. OPIXray数据集(2020) 2. HIXray数据集(2021) 3. SIXray数据集(2019) 4. CLCXray数据集(2022) 5. PIDray数据集(2021) 6. GDXray数据集(20…

C++-引用,inline,nullptr

一,引用 1.1引用的概念与定义 引用不是新定义⼀个变量,而是给已存在变量取了⼀个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同⼀块内存空间。 引用的使用方式如下: 类型& 引用别名 引用对象…

【带你入门生信】什么是生物信息学

生物信息学 生物信息学:利用应用数学、信息学、统计学和计算机科学,对生物学数据进行搜索(收集和筛选)、处理(编辑、整理、管理和显示)及分析(计算和模拟),提取生物信息…

一键生成原创文案,轻松成为文案高手的方法

当下时代,文案写作对于各个企业推广产品和服务显得隔外重要。优秀的文案能够吸引用户的注意力,激发购买欲望,从而为企业带来更多的销售机会。然而,对于许多人来说,撰写出一篇吸引人的原创文案可能并不容易。但是&#…

【C++】C++11之新的类功能与可变参数模板

目录 一、新的默认成员函数 二、新的关键字 2.1 default 2.2 detele 2.3 final和override 三、可变参数模板 3.1 定义 3.2 递归展开参数包 3.3 逗号表达式展开参数包 3.4 emplace_back 一、新的默认成员函数 在C11之前,默认成员函数只有六个,…