当前位置: 首页 > news >正文

【数据结构与算法 | 二叉树篇】二叉树的前中后序遍历(递归版本)

1. 二叉树的概念

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

(2). 完全二叉树与满二叉树

概念这玩意还是几个月前看王卓老师的视频里学的,现在看的认识,但描述起来有点便秘啊有木有. 还可能讲错了.

(1). 满二叉树就是最后一层只有叶子节点,除最后一层以外全是度为2的节点.

(2). 完全二叉树就是只有度为2与度为0的节点.只有最后一层会出现叶子节点.

2. 力扣144 : 二叉树的前序遍历

(1). 题

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

示例 1:

338d2d2a15f13ed824d5057039efeb64.jpeg

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

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

示例 4:

1775e87d2b28839e1ef9c107353a5d3d.jpeg

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

示例 5:

7d95bcb265756124431904992ab141ff.jpeg

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

提示:

  • 树中节点数目在范围 [0, 100] 内
  • -100 <= Node.val <= 100

(2). 思路

口诀怼他个,前序遍历根左右.

(3). 解

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

3. 力扣94 : 二叉树的中序遍历

(1). 题

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

示例 1:

bbd8d03c42111dd89582e22df7df83b3.jpeg

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

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

提示:

  • 树中节点数目在范围 [0, 100] 内
  • -100 <= Node.val <= 100

(2). 思路

口诀,左根右.

(3). 解

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

4. 力扣145 : 二叉树的后序遍历

(1). 题

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 

示例 1:

5d21d6a6783e519490c4816cbc2ea222.jpeg

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

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

提示:

  • 树中节点的数目在范围 [0, 100] 内
  • -100 <= Node.val <= 100

(2). 思路

口诀,左右根搞定.

(3). 解

class Solution {List<Integer> al = new ArrayList<>();public List<Integer> postorderTraversal(TreeNode root) {reverse(root);return al;}public void reverse(TreeNode root) {if (root == null) {return;}reverse(root.left);reverse(root.right);al.add(root.val);}
}
http://www.lryc.cn/news/359626.html

相关文章:

  • Python exp用法:深入探索指数函数的奥秘
  • [有监督学习] 8.详细图解神经网络
  • 我给线程池管理框架hippo4j找bug
  • win10键盘按乱了,如何恢复?
  • 5.29工效学-人因工程人机交互
  • 头歌数据结构与算法课程设计中-硬币找零
  • Golang的内存关系
  • VRTK4.0学习——(二)
  • 体验Photoshop:无需下载,直接在浏览器编辑图片
  • Codeforces Round 895 (Div. 3)(A,B,C)题解(自己VP的,没有参加这场比赛)
  • 9秒爬取庆余年2分集剧情
  • 阿里云布置net core 项目
  • 两整数之和 ---- 位运算
  • 长城电脑压缩文件丢失了怎么办?怎么解决
  • 论文笔记《基于深度学习模型的药物-靶标结合亲和力预测》
  • ArrayList和LinkedList对比,ArrayList使用注意事项
  • 小熊家务帮day5-day7 客户管理模块1 (小程序认证,手机验证码认证,账号密码认证,修改密码,找回密码等)
  • 计算机图形学入门02:线性代数基础
  • 函数:计算数组的元素和
  • 如何进行数据库分库分表
  • Spring-Cloud-CircuitBreaker-Resilience4j (3.1.1)
  • 重构与优化-组织数据(3)
  • 游戏交易平台源码游戏帐号交易平台系统源码
  • Matlab里面的浮点数与FPGA定点数的相互转化应用(含Matlab代码,封装成函数可直接调用)
  • 机器学习笔记——欠拟合、过拟合
  • 【二进制部署k8s-1.29.4】七、验证master的安装
  • springboot获取当前数据库连接
  • 【学习笔记】Windows GDI绘图(九)Graphics详解(上)
  • 公告:公众号铁粉粉丝介绍以及说明
  • BioTech - 使用 CombFold 算法 实现 大型蛋白质复合物结构 的组装过程