二叉树的递归遍历

news/2025/1/15 20:56:25/文章来源:https://www.cnblogs.com/dwhere/p/18518887

二叉树的递归遍历

题目链接:
前序遍历: LeetCode 144
中序遍历: LeetCode 94
后序遍历: LeetCode 145
描述
给你二叉树的根节点 root ,返回它节点值的 前序中序后序 遍历。
在这里插入图片描述
示例1:前序遍历

输入:root = [1,null,2,3]
输出:[1,2,3]

示例2:中序遍历

输入:root = [1,null,2,3]
输出:[1,3,2]

示例3:后序遍历

输入:root = [1,null,2,3]
输出:[3,2,1]

思路

这里前中后,其实指的就是中间节点的遍历顺序,只要大家记住 前中后序指的就是中间节点的位置就可以了。
看如下中间节点的顺序,就可以发现,中间节点的顺序就是所谓的遍历方式
前序遍历:中左右
中序遍历:左中右
后序遍历:左右中

二叉树的定义

public 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;}
}

前序遍历

class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();preorder(root, result);return result;}public void preorder(TreeNode root, List result){if(root == null){return;}result.add(root.val);preorder(root.left, result);preorder(root.right, result);}
}

中序遍历

class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();inorder(root,result);return result;}public void inorder(TreeNode root, List result){if(root == null){return;}inorder(root.left,result);result.add(root.val);inorder(root.right,result);}
}

后序遍历

class Solution {public List<Integer> postorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();postorder(root,result);return result;}public void postorder(TreeNode root, List list){if(root == null){return;}postorder(root.left,list);postorder(root.right,list);list.add(root.val);}
}

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

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

相关文章

靈機 AI 解夢:傳統周公解夢的現代升級

# 靈機AI解夢:傳統周公解夢的現代升級在人類文化的長河中,夢一直是一個充滿神秘色彩的領域。人們對夢的解讀和探索從未停止,從古老的周公解夢到現代的各種解夢理論和方法,都反映了人類對潛意識世界的好奇與渴望。靈機AI解夢平台的出現,為解夢領域帶來了新的活力和可能,與…

20222418 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1.实验内容 实验内容 (1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件 veil,加壳工具 使用C + shellcode编程(2)通过组合应用各种技术实现恶意代码免杀 如果成功实现了免杀的,简单语言描…

Android添加OpenCV支持,一步一步添加。

首先下载OpenCV的SDK 推荐在官网下载。 官网地址:https://opencv.org/releases/ 也可以在OpenCV的GitHub上现在 GitHUb链接:https://github.com/opencv/opencv/releases 官网下载:GitHub下载下载完成后,解压压缩包,会得到以下目录其中SDK文件夹是我们要导入的目标。在进行…

有哪些好用的互联网项目远程协作工具

好用的互联网项目远程协作工具有:一、Slack;二、Microsoft Teams;三、Trello;四、Asana;五、Google Workspace。其中,Slack具有强大的聊天和通知功能,它允许用户创建不同的频道来组织讨论,并支持与其他工具的集成。一、Slack Slack是一款流行的实时沟通工具,以其强大的…

xshell终端识别http ftp 链接 ctrl点击打开链接

前言全局说明xshell终端识别http ftp 链接 ctrl点击打开链接一、说明终端链接可以直接点击,比复制一下方便很多二、开启,中断连接识别 2.1 点工具--选项2.2 点 键盘鼠标 -- 鼠标 按图片勾选免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。参考、…

麒麟系统(arm64/aarch64)docker部署prometheus系统

备注:1.不推荐yum或者源码安装,安装包跟系统架构不兼容,推荐docker方式部署,这样就可以忽略系统不兼容的问题。2.准备工作:开通端口映射,即公网的ip加grafana的默认端口9090到内网部署grafana服务的服务器的9090端口的映射,就可以通过外网访问。 一、目标:收集所有节点…

你的第一个Solana SPL

简介 TFT 你的第一个SPL The first token技术栈和库Rust Anchor框架 Typescript(测试)开发环境和其它网络地址DevNet: https://api.devnet.solana.com TestNet: https://api.testnet.solana.com MainNet: https://api.mainnet-beta.solana开发环境设置 1.本教程使用的时 DevNet…

27 3D图形

3d转2d,用3d投影的数学思想;直线角度,正交投影,投透视投射;一般是三角形,三点可以确定i个平面;从投影角度来绘制多面体结构; 前后采取扫描线渲染 阴暗,通过三角形界面法线方向与光源角度偏移度,平面着色 纹理通过扫面线

项目管理计划都有什么作用

项目管理计划是项目成功的关键导航工具,其主要作用包括确定目标与范围、资源分配、时间管理、风险识别与应对,以及质量保证。该计划帮助团队和利益相关者对项目有全面而明确的认识。特别值得一提的是,通过时间管理,项目管理计划确保了各个阶段和活动在预定时间内完成,从而…

多租户系统的应用架构

大家好,我是汤师爷~ 我们看下多租户系统的应用架构是如何从一层层构建起来的。1、应用层设计 应用层的主要作用是为具体的用户场景提供应用服务,帮助用户在特定场景下完成操作。通过编排领域层的各项能力,实现SaaS产品的核心功能。应用层包含两个关键模块:租户运营平台模块…

环境搭建

一、环境的介绍 (1)测试环境分类; a、开发环境 , 开发 b、测试环境 ,(也叫sit环境 ,uat环境) 测试人员 c、线上环境(也叫生成环境) 运营 (2)测试环境作用: a、用于功能测试 b、寻找bug c、编写测试用例等 (3)环境的结构: lampj=linux+apache+mysql+j…