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

【leetcode】第六章 二叉树part01

递归遍历

144. 二叉树的前序遍历

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

94. 二叉树的中序遍历

public List<Integer> inorderTraversal(TreeNode root) {// 递归List<Integer> res = new ArrayList<>();inOrder(root, res);return res;}private void inOrder(TreeNode root, List<Integer> res) {if (root == null) return;inOrder(root.left, res);res.add(root.val);inOrder(root.right, res);}

145. 二叉树的后序遍历

public List<Integer> postorderTraversal(TreeNode root) {// 递归List<Integer> res = new ArrayList<>();postOrder(root, res);return res;}private void postOrder(TreeNode root, List<Integer> res) {if (root == null) return;postOrder(root.left, res);postOrder(root.right, res);res.add(root.val);}

非递归遍历

  • 前序
public List<Integer> preorderTraversal(TreeNode root) {// 非递归List<Integer> res = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();while (root != null || !stack.isEmpty()) {// 一直将左节点压入栈中while (root != null) {res.add(root.val); // 根节点首先访问stack.push(root);root = root.left;}root = stack.pop();root = root.right; }return res;}
  • 中序
public List<Integer> inorderTraversal(TreeNode root) {// 非递归List<Integer> res = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();while (root != null || !stack.isEmpty()) {while (root != null) {stack.push(root);root = root.left;}root = stack.pop();res.add(root.val);root = root.right;}return res;}
  • 后序
public List<Integer> postorderTraversal(TreeNode root) {// 非递归List<Integer> res = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();TreeNode prev = null;while (root != null || !stack.isEmpty()) {// 将左节点压入栈while (root != null) {stack.push(root);root = root.left;}root = stack.pop();// 后序遍历的过程中在遍历完左子树跟右子树cur都会回到根结点。// 所以当前不管是从左子树还是右子树回到根结点都不应该再 操作了,应该退回上层。// 如果是从右边再返回根结点,应该回到上层。// 主要就是判断出来的是不是右子树,是的话就可以把根节点=加入到list了if (root.right == null || root.right == prev) {res.add(root.val);prev = root;root = null;}else {stack.push(root);root = root.right;}}return res;}
http://www.lryc.cn/news/144414.html

相关文章:

  • All In One!Meta发布SeamlessM4T,支持100种语言,35种语音、开源、在线体验!
  • Python可视化工具库实战
  • 编解码视频测试序列集
  • 1 Hadoop入门
  • 骨传导耳机哪款比较好,市面上最好的骨传导耳机分享
  • centos7安装docker-compose—及常见错误排解
  • Stable Diffusion 文生图技术原理
  • Jumpserver堡垒机管理(安装和相关操作)-------从小白到大神之路之学习运维第89天
  • 伦敦金走势多变怎么办
  • MybatisPlus-插件篇
  • 数学建模:熵权法
  • 软件测试实训系统建设方案
  • 部署 ssm 项目到云服务器上(购买云服务器 + 操作远程云服务器 + 服务器中的环境搭建 + 部署项目到服务器)
  • python爬虫-使用selenium自动登录微博
  • Python 面试:可变类型和不可变类型作为函数参数,关键字参数
  • Web3.0时代什么时候到来,Web3.0有什么机会?
  • vue心得
  • JavaScript—数据类型、对象与构造方法
  • 自定义node-red节点中,如何编写节点的配置信息弹窗
  • 数据之美:探索数据可视化设计的奇妙世界
  • docker初始化
  • 【C语言】结构体变量引用的一个例子
  • 美团笔试题之合并 K 个升序链表
  • C语言(第三十一天)
  • 【C/C++】虚析构 | 抽象类
  • MySQL 的隐式转换导致诡异现象的案例一则
  • 【考研数学】概率论与数理统计 —— 第二章 | 一维随机变量及其分布(2,常见随机变量及其分布 | 随机变量函数的分布)
  • 【2023中国算力大会】《中国综合算力指数(2023年)》出炉,宁夏“资源环境”位列全国第1,“算力”跃入Top10
  • 自动设置服务器全教程
  • Mysql--技术文档--B树-数据结构的认知