当前位置: 首页> 科技> 数码 > 免费音效素材网站_微信小程序制作平台官网_站长之家查询_许昌网络推广外包

免费音效素材网站_微信小程序制作平台官网_站长之家查询_许昌网络推广外包

时间:2025/7/9 22:21:53来源:https://blog.csdn.net/2201_75724363/article/details/144222417 浏览次数:0次
免费音效素材网站_微信小程序制作平台官网_站长之家查询_许昌网络推广外包

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~
🌱🌱个人主页:奋斗的明志
🌱🌱所属专栏:数据结构

在这里插入图片描述

📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。

在这里插入图片描述

力扣

  • 一、二叉树的前序遍历
    • 1. 题目
    • 2. 递归求解
    • 3. 迭代求解
  • 二、字典序最小回文串
    • 1.题目
    • 2.双指针实现

一、二叉树的前序遍历

二叉树的前序遍历


1. 题目


在这里插入图片描述


在这里插入图片描述


2. 递归求解


  • 前序遍历:根 —> 左子树 —> 右子树
  • 先访问根节点,然后再分别对当前根节点的左子树和右子树重复同样的操作。
  • 中序遍历和后序遍历也都是类似的,由此可以看出二叉树遍历本身就具有递归的性质。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/*** 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 {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> ret = new ArrayList<>();// 进行递归preorder(root, ret);return ret;}public void preorder(TreeNode root, List<Integer> ret) {if(root == null){return ;}//处理根节点ret.add(root.val);//处理左子树preorder(root.left,ret);//处理右子树preorder(root.right,ret);}
}

3. 迭代求解


  • 代码一:
/*** 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 {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> ret = new ArrayList<>();if (root == null) {return ret;}Stack<TreeNode> stack = new Stack<>();TreeNode cur = root;stack.push(cur);while (!stack.isEmpty()) {// 取出栈顶元素TreeNode tmp = stack.pop();ret.add(tmp.val);if (tmp.right != null) {stack.push(tmp.right);}if (tmp.left != null) {stack.push(tmp.left);}}return ret;}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 代码二:
/*** 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 {// 非递归实现public List<Integer> preorderTraversal(TreeNode root) {// 创建一个 List 存储结果List<Integer> ret = new ArrayList<>();if(root == null){return ret;}// 利用栈模拟实现// 创建一个栈 先进后出Stack<TreeNode> s = new Stack<>();TreeNode cur = root;while(cur != null || !s.isEmpty()){while(cur != null){s.push(cur);ret.add(cur.val);cur = cur.left;}//弹出栈顶元素TreeNode tmp = s.pop();cur = tmp.right;}return ret;}
}

二、字典序最小回文串

字典序最小回文串


1.题目


在这里插入图片描述


2.双指针实现

  • 可以使用双指针对给定的字符串 s 进行遍历。
  • 初始时,两个指针 left 和 right 分别指向 s 的首尾。
  • 在遍历的过程中,left 每次向右移动一个位置,right 每次向左移动一个位置,这样一来,它们总是指向在最终回文字符串中必须相同的两个字母
  • 会有以下两种情况:
  • 如果它们指向的字母相同,我们无需进行任何操作。当两个指针指向同一个位置时,也属于这一种情况;
  • 如果它们指向的字母不同,由于需要尽可能少的操作,我们会把其中一个字母修改成与另一个字母相同。
  • 对于这一次操作,我们需要让最终字符串的字典序最小,因此我们应当贪心地将字典序较大的字母改成与字典序较小的字母相同。
class Solution {public String makeSmallestPalindrome(String s) {//转换为数组char[] array = s.toCharArray();int left = 0,right = array.length - 1;while(left < right){if(array[left] != array[right]){char tmp = (char)Math.min(array[left],array[right]);array[left] = tmp;array[right] = tmp;}left++;right--;}return new String(array);}
}

在这里插入图片描述

在这里插入图片描述

关键字:免费音效素材网站_微信小程序制作平台官网_站长之家查询_许昌网络推广外包

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: