java数据结构与算法刷题-----LeetCode144. 二叉树的前序遍历

news/2025/3/15 11:57:44/
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 利用递归,每次入栈一个结点(每次递归都是一个入栈操作)。然后依次访问左右结点
  2. 先序遍历是,先访问当前结点,然后访问左儿子,然后访问右儿子
  3. 可以自己创建栈,然后不使用递归
代码
  1. 递归
    在这里插入图片描述
/*** Definition for a binary tree node.* 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 {private LinkedList<Integer> list = new LinkedList<>();/**递归先输出自己,然后左子树,然后右子树*/public List<Integer> preorderTraversal(TreeNode root) {if(root == null) return list;list.add(root.val);if(root.left != null) preorderTraversal(root.left);if(root.right != null) preorderTraversal(root.right);return list;}
}
  1. 迭代,自己创建栈模拟递归过程
    在这里插入图片描述
class Solution {/**迭代*/public List<Integer> preorderTraversal(TreeNode root) {Stack<TreeNode> stack = new Stack<>();//模拟栈LinkedList<Integer> list = new LinkedList<>();//保存答案while(root != null || !stack.isEmpty()){//如果栈不为空,或者当前结点不为空,就还能遍历while(root!=null){//不断访问list.add(root.val);//先访问当前结点stack.push(root);//然后将当前结点入栈root = root.left;//然后访问左子树}root = stack.pop();//然后出栈root = root.right;//访问其右子树}return list;}
}

http://www.ppmy.cn/news/1357430.html

相关文章

android之Cordova 5.3.1 Android 应用无法上网

我正在尝试在 android 上部署一个非常简单的 cordova 应用程序。它应该启动&#xff0c;然后通过角度 $http 拉入国家列表并显示它们。 由于某些原因它无法访问互联网&#xff0c;为了简化测试&#xff0c;我添加了一个图像标签来显示网络上的图像。图片也不显示。 我也无法连…

vue中computed和watch的使用场景

在Vue中&#xff0c;computed和watch均是用于处理数据的计算和响应的工具&#xff0c;它们的使用场景如下&#xff1a; computed&#xff1a; 当需要根据已有的数据来计算出新的数据时&#xff0c;可以使用computed。computed属性是一个函数&#xff0c;返回的是一个被计算的值…

【PyTorch][chapter 17][李宏毅深度学习]【无监督学习][ Auto-encoder]

前言&#xff1a; 本篇重点介绍AE&#xff08;Auto-Encoder&#xff09; 自编码器。这是深度学习的一个核心模型. 自编码网络是一种基于无监督学习方法的生成类模型,自编码最大特征输出等于输入 Yann LeCun&Bengio, Hinton 对无监督学习的看法. 目录&#xff1a; AE 模型原…

db-gpt docker部署进坑

1.docker 不支持gpu&#xff0c;参考之前文章 2.docker 容器启动就关闭&#xff0c;docker ps -a 查看容器状态为exited 停止 定位问题&#xff1a; &#xff08;1&#xff09; 查看日志 docker logs dbgpt -f &#xff08;2&#xff09; 日志错误最后一行&#xff1a; V…

AutoKeras(Python自动化机器学习)多模态数据和多任务

要点拓扑 AutoKeras 拓扑 要点 常规机器学习&#xff1a;scikit-learn示例探索性数据分析和数据预处理&#xff0c;线性回归&#xff0c;决策树图像分类ResNet模型示例&#xff0c;合成数据集DenseNet模型示例绘图线性回归和决策树模型使用Python工具seaborn、matplotlib、pan…

oracle INSERT 批量插入写法

直接采用mysql那种INSERT批量插入语句的写法&#xff0c;会报 SQL 错误 [933] [42000]: ORA-00933: SQL 命令未正确结束 它可以使用以下方法来批量插入数据&#xff1a; 使用INSERT ALL语句&#xff1a;可以在一条INSERT语句中插入多个记录。使用这种方法&#xff0c;您可以为…

时间的周期性波动与循环,是宇宙中亘古不变的“界规”

时间周期波动循环在自然界具有普遍性&#xff0c;也是宇宙自然之道运化。“道”这一事物我们常常难以说清楚&#xff0c;因为道对我们而言好像是不可触碰&#xff0c;不可看见。但是,“道”也是有据可循的&#xff0c;它是自然规律并不是玄学&#xff0c;与其说有神明在掌控&am…

SpringBoot+WebSocket实现即时通讯(四)

前言 紧接着上文《SpringBootWebSocket实现即时通讯&#xff08;三&#xff09;》 本博客姊妹篇 SpringBootWebSocket实现即时通讯&#xff08;一&#xff09;SpringBootWebSocket实现即时通讯&#xff08;二&#xff09;SpringBootWebSocket实现即时通讯&#xff08;三&…