二叉树的递归遍历
1.二叉树的递归遍历
2.LeetCode102 二叉树的层序遍历二叉树的递归遍历
题目链接:
前序遍历: 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); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了