二叉树遍历方式代码解读(1递归)

遍历方式

先序遍历:根 → 左 → 右

中序遍历:左 → 根 → 右

后序遍历:左 → 右 → 根

下面我将分别用递归的方法进行代码的讲解:

先构造一棵小树,用小树的例子进行讲解

1.先序遍历:

复制代码
public void preOrder(TreeNode root) {

if (root == null) return;

System.out.print(root.val + " "); // 根

preOrder(root.left); // 左

preOrder(root.right); // 右

}

过程:

1.调用 preOrder(1)

不为空,打印:

递归左孩子:preOrder(2)

2.调用 preOrder(2)

不为空,打印:2

递归左孩子:preOrder(4)

3.调用 preOrder(4)

不为空,打印:4

递归左孩子:preOrder(null) → 直接返回

递归右孩子:preOrder(null) → 直接返回

函数结束,回到上一层(节点 2)

回到 preOrder(2)

4.左子树走完了,现在递归右孩子:preOrder(null) → 返回

函数结束,回到上一层(节点 1)

回到 preOrder(1)

5.左子树走完了,递归右孩子:preOrder(3)

6.调用 preOrder(3)

不为空,打印:3

左、右都是 null,直接返回

回到节点 1,整个遍历结束

先序结果:1 2 4 3

2.中序遍历:

复制代码
public void inOrder(TreeNode root) {

if (root == null) return;

inOrder(root.left); // 左

System.out.print(root.val + " "); // 根

inOrder(root.right); // 右

}
复制代码
过程:

1.inOrder(1)

先递归左:inOrder(2)

2.inOrder(2)

先递归左:inOrder(4)

3.inOrder(4)

递归左:inOrder(null) 返回

打印:4

递归右:inOrder(null) 返回

回到节点 2

4.回到 inOrder(2)

左走完,打印:2

递归右:inOrder(null) 返回

回到节点 1

5.回到 inOrder(1)

左走完,打印:1

6.递归右:inOrder(3)

inOrder(3)

递归左:null

打印:3

递归右:null

结束

中序结果:4 2 1 3

3.后序遍历:

复制代码
public void postOrder(TreeNode root) {

if (root == null) return;

postOrder(root.left); // 左

postOrder(root.right); // 右

System.out.print(root.val + " "); // 根

}

过程:

1.postOrder(1) → 先走左 postOrder(2)

2.postOrder(2) → 先走左 postOrder(4)

3.postOrder(4)

左:null

右:null

打印:4

返回节点 2

4.回到 postOrder(2)

左走完,走右:null

打印:2

返回节点 1

5.回到 postOrder(1)

左走完,走右 postOrder(3)

6.postOrder(3)

左、右都 null

打印:3

返回节点 1

7.回到 postOrder(1)

左右都走完

打印:1

后序结果:4 2 3 1

相关推荐
Sarvartha4 小时前
final 关键字
java·开发语言
2601_952047794 小时前
单一策略深度教程:用轻易云把集成任务的报错实时推送到钉钉机器人
java·机器人·钉钉
yi0114 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
数据狐(Datafox)4 小时前
淘宝图片搜索 API 落地实战:基于以图搜货搭建跨境电商选品系统
java·大数据·微服务
Escalating_xu6 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
灯澜忆梦6 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
禾小西7 小时前
Redis 数据结构:快速的 Redis 有哪些慢操作?
数据结构·数据库·redis
小蒋观天下7 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型