【每日一题】Leetcode 刷题 二叉树-树的遍历 介绍

2023-11-16

前序遍历 (根 左 右)

在这里插入图片描述
遍历顺序分别为: F B A D C E G I H

中序遍历 (左 根 右)

在这里插入图片描述
中序遍历顺序分别为:A B C D E F G H I

后序遍历 (左 右 根)

在这里插入图片描述
后序遍历顺序分别为:A C E D B H I G F

代码实现

前序遍历

在这里插入图片描述
在这里插入图片描述

  • 二叉树的前序遍历 代码
import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list=new ArrayList();
        preOrder(root,list);
        return list;
    }
    public void preOrder(TreeNode root,List<Integer> list){
        if(root==null){
            return;
        }
        list.add(root.val);
        preOrder(root.left,list);
        preOrder(root.right,list);
    }
	//main测试
    public static void main(String[] args) {
        TreeNode node = new TreeNode(1);
        TreeNode node2 = null;
        TreeNode node3 = new TreeNode(2);
        TreeNode node4 = new TreeNode(3);
        node.left=node2;
        node.right=node3;
        node.right.left=node4;

        List<Integer> list = new Solution().preorderTraversal(node);
        System.out.println(list);

    }
}

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

    TreeNode() {
    }

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

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

中序遍历

在这里插入图片描述
在这里插入图片描述

  • 二叉树的中序遍历 代码
 public List<Integer> cenorderTraversal(TreeNode root) {
        List<Integer> list=new ArrayList();
        cenOrder(root,list);
        return list;
    }
    //中序遍历  左 根 右
    public void cenOrder(TreeNode root,List<Integer> list){
        if(root==null){
            return;
        }
        cenOrder(root.left,list);
        list.add(root.val);
        cenOrder(root.right,list);
    }

    public static void main(String[] args) {
        TreeNode node = new TreeNode(1);
        TreeNode node2 = null;
        TreeNode node3 = new TreeNode(2);
        TreeNode node4 = new TreeNode(3);
        node.left=node2;
        node.right=node3;
        node.right.left=node4;

        // List<Integer> list = new Solution().preorderTraversal(node);
        List<Integer> list = new Solution().cenorderTraversal(node);
        System.out.println(list);

    }

后序遍历

在这里插入图片描述

  • 后序遍历 代码
    在这里插入图片描述
 public List<Integer> houorderTraversal(TreeNode root) {
        List<Integer> list=new ArrayList();
        houOrder(root,list);
        return list;
    }
    //中序遍历  左 根 右
    public void houOrder(TreeNode root,List<Integer> list){
        if(root==null){
            return;
        }
        houOrder(root.left,list);
        houOrder(root.right,list);
        list.add(root.val);
    }

    public static void main(String[] args) {
        TreeNode node = new TreeNode(1);
        TreeNode node2 = null;
        TreeNode node3 = new TreeNode(2);
        TreeNode node4 = new TreeNode(3);
        node.left=node2;
        node.right=node3;
        node.right.left=node4;

        // List<Integer> list = new Solution().preorderTraversal(node);
        // List<Integer> list = new Solution().cenorderTraversal(node);
        List<Integer> list = new Solution().houorderTraversal(node);
        System.out.println(list);

    }
}

完整代码

import java.util.ArrayList;
import java.util.List;

class Solution {
    //前序遍历
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list=new ArrayList();
        preOrder(root,list);
        return list;
    }
    //前序遍历  根 左 右
    public void preOrder(TreeNode root,List<Integer> list){
        if(root==null){
            return;
        }
        list.add(root.val);
        preOrder(root.left,list);
        preOrder(root.right,list);
    }

    public List<Integer> cenorderTraversal(TreeNode root) {
        List<Integer> list=new ArrayList();
        cenOrder(root,list);
        return list;
    }
    //中序遍历  左 根 右
    public void cenOrder(TreeNode root,List<Integer> list){
        if(root==null){
            return;
        }
        cenOrder(root.left,list);
        list.add(root.val);
        cenOrder(root.right,list);
    }

    public List<Integer> houorderTraversal(TreeNode root) {
        List<Integer> list=new ArrayList();
        houOrder(root,list);
        return list;
    }
    //中序遍历  左 根 右
    public void houOrder(TreeNode root,List<Integer> list){
        if(root==null){
            return;
        }
        houOrder(root.left,list);
        houOrder(root.right,list);
        list.add(root.val);
    }

    public static void main(String[] args) {
        TreeNode node = new TreeNode(1);
        TreeNode node2 = null;
        TreeNode node3 = new TreeNode(2);
        TreeNode node4 = new TreeNode(3);
        node.left=node2;
        node.right=node3;
        node.right.left=node4;

        List<Integer> list = new Solution().preorderTraversal(node);
        // List<Integer> list = new Solution().cenorderTraversal(node);
        // List<Integer> list = new Solution().houorderTraversal(node);
        System.out.println(list);

    }
}

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

    TreeNode() {
    }

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

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【每日一题】Leetcode 刷题 二叉树-树的遍历 介绍 的相关文章

  • 大数(四则运算)

    四则运算 大数加法 高精度加法 大数减法 大数乘法 大数乘法 幂运算 大数乘法 高精度幂运算 大数除法 大数加法 思路 从后往前算 即由低位向高位运算 计算的结果依次添加到结果中去 最后将结果字符串反转 输入的时候两个数都是以字符串的形式输
  • 网站架构演变

    网站架构演变 大型网站介绍 与传统企业应用系统相比 大型互联网网站系统具有以下特点 1 大流量 高并发 这一点往往是传统企业应用系统根本就不会遇到的问题 比如Goole每日访问量都是几十亿 如果服务器端处理不好早就被压的宕机了 2 高可用
  • 环形缓冲区(1)

    声明 参考韦东山视频教程 如若侵权请告知 马上删帖致歉 个人总结 如有不对 欢迎指正 环形缓冲区 环形缓冲区的几个基本操作 申请内存空间 写操作 读操作 环形缓冲区小结 判断缓冲区是否为空 判断缓冲区是否写满 构建环形缓冲区 在 h文件中声

随机推荐

  • 【Augmentation Zoo】RetinaNet + VOC + KITTI的数据预处理-pytorch版

    整合前段时间看的数据增强方法 并测试其在VOC和KITTI数据上的效果 我的工作是完成了对VOC和KITTI数据的预处理 RetinaNet的模型代码来自pytorch retinanet 该项目github仓库在 https github
  • 中标麒麟+达梦数据库 无效的列名[AAAAAAAAAAAAAFS]

    目录 前言 解决办法 中标麒麟 解决办法 windows 前言 今天我将项目部署到中标麒麟服务器 发现原本好使的功能 只要一做添加操作就报如下错误 虽然报错 但数据还是添加了进去 这让我十分费解 解决办法 中标麒麟 问题出现在返回新增结果时
  • Next.js中使用antd修改其组件的默认样式

    在项目中使用了next js搭配了antd 其中需要自定义antd样式 在next js中如果想定义css 我用到的有两种方式 一种是直接使用行内式 div test div 另一种就是写一个css文件后引入 定义一个test module
  • SpringBoot(5)-SpringBoot整合其他项目

    SpringBoot 5 SpringBoot整合其他项目 1 整合Druid数据库连接池 1 1学习地址 1 2application yml 1 3访问一下 1 4随便执行一下新增 2 整合Redis 2 1添加redis pom依赖
  • mimikatz

    https blog gentilkiwi com mimikatz https github com ParrotSec mimikatz
  • C++day1(笔记整理)

    一 Xmind整理 二 上课笔记整理 1 第一个c 程序 hello world include
  • docker 四种网络模型

    一 docker网络基础知识 Docker在创建容器时有四种网络模式 bridge为默认不需要用 net去指定 其他三种模式需要在创建容器时使用 net去指定 bridge模式 使用 net bridge指定 默认设置 none模式 使用
  • java各类型String,int,char,long,StringBuilder,StringBuffer,Integer之间的转换总结

    String和char类型之间的转换 1 String char 因为String是字符串 而char是单个字符 只能把String 转化为char数组 方法为 char ch str toCharArray 2 char String 方
  • cmake命令之target_include_directories

    一 介绍 命令格式 target include directories
  • 完整的芯片反向设计流程原来是这样的!(实例讲解)

    完整的芯片反向设计流程原来是这样的 实例讲解 作者 时间 2018 02 23来源 网络收藏 现代IC产业的市场竞争十分激烈 所有产品都是日新月异 使得各IC设计公司必须不断研发新产品 维持自身企业的竞争力 IC设计公司常常要根据市场需求进
  • 在JavaScript的ES5版本中Array数组的reduce方法详解

    函数声明 reduce callback initialValue 参数说明 callback 回调函数 格式为function prev next initialValue 初始值 可选参数 返回值 最后一次执行callback 回调函数
  • SOME/IP

    SOME IP 名词解释 SOME IP 全称是 Scalable service Oriented MiddlewarE over IP 也就是基于 IP 协议的面向服务的可扩展性通信中间件协议 面向服务 SOA 基于 IP 协议之上的通
  • springcloud动态加载日志路径和log.path_IS_UNDEFINED目录问题

    多模块工程中通常需要将不同模块服务的日志输出到指定的目录 日志目录结构如下 logs app1 app2 基于上述需要 需要在logback spring xml中动态读取application yml 或者application prop
  • 简单的tcpdump抓包使用总结:抓取指定ip、指定网卡、指定端口的包

    1 今天由于需要抓包研究网络问题 所以研究了一下抓取指定ip 指定网卡 指定端口的包并且输入到文件中 2 tcpdump与Wireshark介绍 在网络问题的调试中 tcpdump应该说是一个必不可少的工具 和大部分linux下优秀工具一样
  • ES使用小结

    ES使用总结 1 查询es全部索 2 根据es索引查询文档 3 查看指定索引mapping文件 4 默认查询总数10000条 5 删除指定索引文档 6 删除所有数据包括索引 7 設置窗口值 8 logstash简单配置 Logstash配置
  • 高德地图Amap常用功能总结

    设置缩放比例 1 设置缩放比例的api是 aMap moveCamera CameraUpdateFactory zoomTo 18 如果你直接设置是没用的 因为此时地图还没加载成功 所以要监听地图加载成功的事件 aMap setOnMap
  • MATLAB中均值、方差、均方差的计算方法

    1 均值 数学定义 Matlab函数 mean gt gt X 1 2 3 gt gt mean X 2 如果X是一个矩阵 则其均值是一个向量组 mean X 1 为列向量的均值 mean X 2 为行向量的均值 gt gt X 1 2 3
  • sql查询按两个字段查询重复记录

    1 sql查询按两个字段查询重复记录 代码如下 示例 select from 表名 a where a 字段1 in select 字段1 from 表名 group by 字段1 字段2 having count gt 1 and a 字
  • STM32通过ESP8266利用机智云平台实现手机远程操作

    STM32通过ESP8266利用机智云平台实现手机远程操作 将STM32作为主控芯片 ESP8266作为外设 利用串口传递信息 通过机智云平台实现STM32与手机之间的数据传输 之所以选择机智云平台 是因为机智云平台相关配套的软件工具非常齐
  • 【每日一题】Leetcode 刷题 二叉树-树的遍历 介绍

    二叉树 树的遍历 前序遍历 根 左 右 中序遍历 左 根 右 后序遍历 左 右 根 代码实现 前序遍历 中序遍历 后序遍历 完整代码 前序遍历 根 左 右 遍历顺序分别为 F B A D C E G I H 中序遍历 左 根 右 中序遍历顺