力扣-数据结构-21【算法学习day.92】

devtools/2025/1/18 18:19:04/

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.最深叶节点的最近公共祖先

题目链接:1123. 最深叶节点的最近公共祖先 - 力扣(LeetCode)

题面:

代码:

java">/*** 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 {int maxdep = 0;TreeNode ans = null;int sum = 0;public TreeNode lcaDeepestLeaves(TreeNode root) {recursion2(root,0);// System.out.println(maxdep+"          "+sum);recursion(root,0);return ans;}public int recursion(TreeNode node,int dep){if(node==null){return 0;}if(node.left==null&&node.right==null){if(dep==maxdep){if(sum==1){ans = node;return 99999;}return 1;}return 0;}int l = recursion(node.left,dep+1);int r = recursion(node.right,dep+1);if((l+r)==sum){ans = node;return 99999;}return (l+r);}public void recursion2(TreeNode node,int dep){if(node==null){return;}if(node.left==null&&node.right==null){if(dep>maxdep){maxdep = dep;sum = 1;}else if(maxdep==dep){sum++;}}recursion2(node.left,dep+1);recursion2(node.right,dep+1);}
}

2.从二叉树一个节点到另一个节点的每一步的方向

题目链接:2096. 从二叉树一个节点到另一个节点每一步的方向 - 力扣(LeetCode)

题面:

注意递归遍历树的时候别在参数拼接树,当树太大会OOM,用StringBuilder 

代码:

java">/*** 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 {TreeNode linP = null;int startValue;int destValue;String start = "";String dest = "";public String getDirections(TreeNode root, int startValue, int destValue) {this.startValue = startValue;this.destValue = destValue;int sign = recursion2(root);if(sign==2){linP = root;}StringBuilder sb = new StringBuilder();recursion(linP,sb);// System.out.println(start+"           "+dest);int size = start.length();String ans = "";while(size>0){size--;ans+="U";}if(dest.equals("")){return ans;}if(start.equals("")){return dest;}return ans+dest;}public void recursion(TreeNode node,StringBuilder sb){if(!dest.equals("")&&!start.equals(""))return;if(node==null)return;if(node.val==startValue){start = sb.toString();}else if(node.val==destValue){dest = sb.toString();}recursion(node.left,sb.append("L"));sb.deleteCharAt(sb.length()-1);recursion(node.right,sb.append("R"));sb.deleteCharAt(sb.length()-1);}public int recursion2(TreeNode node){if(linP!=null)return 99999;if(node==null)return 0;int l = recursion2(node.left);int r = recursion2(node.right);if(node.val==startValue||node.val==destValue){int sum = l+r+1;if(sum==2){linP = node;return 9999;}return sum;}if((l+r)==2){linP = node;return 99999;}return l+r;}
}

后言

上面是数据结构相关的习题,下一篇文章会将其他相关的习题。

 

 

 


http://www.ppmy.cn/devtools/151620.html

相关文章

信创改造-龙蜥操作系统搭载MySql、Tomcat等服务

龙蜥操作系统 Anolis OS 8 是 OpenAnolis 社区推出的完全开源、中立、开放的发行版,它支持多计算架构,也面向云端场景优化,兼容 CentOS 软件生态。Anolis OS 8 旨在为广大开发者和运维人员提供稳定、高性能、安全、可靠、开源的操作系统服务。…

Apache Nifi 信息泄露漏洞复现(CVE-2024-56512)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。 0x01 产品描述: Apache NiFi是一个易于使用、功能强大且可靠的数据…

如何运行第一个Tomcat HttpServlet 程序

怀旧网个人博客网站地址:怀旧网,博客详情:如何运行第一个Tomcat HttpServlet 程序 1、编写一个 Servlet 类 创建一个包 在创建一个类--继承HttpServlet 爆红:原因,没有导入所依赖的包 altenter 选着add macen 选着第…

Vue3实现表格搜索内容高亮

采用html拼接 v-html 指令用来将给定的 HTML 字符串直接渲染到页面上 <template><div><!-- 搜索框 --><input v-model"searchText" placeholder"搜索内容" /><!-- 表格 --><el-table :data"tableData" style…

【Excel超实用,VLOOKUP函数,通过excel数据精准匹配,将一个excel文件的某列数据,用另一个excel文件快速填充】

1、使用背景 如下图1所示&#xff0c;1.xlsx文件&#xff0c;有两列数据&#xff0c;一列序号&#xff0c;一列内容&#xff0c; 我现在需要将第二列的内容快速完成填充&#xff0c;并且有相应的excel模板作为参照。 图1 如图2所示&#xff0c;2.xlsx是模板文件&#xff0c;序…

c#删除文件和目录到回收站

之前在c上遇到过这个问题&#xff0c;折腾许久才解决了&#xff0c;这次在c#上再次遇到这个问题&#xff0c;不过似乎容易了一些&#xff0c;亲测代码如下&#xff0c;两种删除方式都写在代码中了。 直接上完整代码&#xff1a; using Microsoft.VisualBasic.FileIO; using Sy…

怎么抓取IOS手机app的网络流量,也就是iphone手机抓包

继续昨天的教程&#xff0c;如抓取ios手机上的https请求。今天介绍如何在抓取iphone手机上的非https请求 也就是socket通信的数据。如果在pc上我们会第一时间讲到wireshark&#xff0c;但是对移动设备&#xff0c;似乎就要复杂很多。最近研究发现的工具嗅探大师&#xff0c;能…

51.WPF应用加图标指南 C#例子 WPF例子

完整步骤&#xff1a; 先使用文心一言生成一个图标如左边使用Windows图片编辑器编辑&#xff0c;去除背景使用正方形&#xff0c;放大图片使图标铺满图片使用格式工程转换为ico格式&#xff0c;分辨率为最大 在资源管理器中右键项目添加ico类型图片到项目里图片属性设置为始终…