代码随想录算法训练营第十七天| 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

513.找树左下角的值

public int findBottomLeftValue(TreeNode root) {List<Integer> path = new ArrayList<>();List<List<Integer>> ans = new ArrayList<>();Boolean[] flag = new Boolean[1];flag[0] = true;dfs(root, path, ans, flag);int maxSizeIndex = 0;if (ans.size() == 0) {return -1;}int maxSize = ans.get(0).size();for (int i = 0; i < ans.size(); i++) {if (maxSize < ans.get(i).size()) {maxSize = ans.get(i).size();maxSizeIndex = i;}}if (ans.get(maxSizeIndex).size() == 0) {return -1;}return ans.get(maxSizeIndex).get(ans.get(maxSizeIndex).size() - 1);
}public void dfs(TreeNode root, List<Integer> path, List<List<Integer>> ans, Boolean[] flag) {if (root == null) {return;}path.add(root.val);if (root.left == null && root.right == null) {ans.add(new ArrayList<Integer>(path));}// flag[0] = true;dfs(root.left, path, ans, flag);// flag[0] = false;dfs(root.right, path, ans, flag);path.remove(path.size() - 1);}

112. 路径总和

public boolean hasPathSum(TreeNode root, int targetSum) {List<Integer> path = new ArrayList<>();List<List<Integer>> ans = new ArrayList<>();dfs(root, path, ans);for (List<Integer> an : ans) {int sum = 0;for (Integer integer : an) {sum += integer;}if (sum == targetSum) {return true;}}return false;
}public void dfs(TreeNode root, List<Integer> path, List<List<Integer>> ans) {if (root == null) {return;}path.add(root.val);if (root.left == null && root.right == null) {ans.add(new ArrayList<Integer>(path));}dfs(root.left, path, ans);dfs(root.right, path, ans);path.remove(path.size() - 1);}

105.从前序与中序遍历序列构造二叉树

public TreeNode buildTree(int[] preorder, int[] inorder) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < inorder.length; i++) {map.put(inorder[i], i);}return build(preorder, inorder, 0, preorder.length - 1, 0, inorder.length - 1, map);
}public TreeNode build(int[] preorder, int[] inorder, int preStart, int preEnd, int inStart, int inEnd, Map<Integer, Integer> inMap) {if (preStart > preEnd || inStart > inEnd) {return null;}int rootVal = preorder[preStart];TreeNode root = new TreeNode(rootVal);Integer rootIndex = inMap.get(rootVal);//左子树的长度int instance = rootIndex - inStart;//左递归,分解成子问题,每次递归去除根节点,保留左子树的节点  root.left = build(preorder, inorder, preStart + 1, preStart + instance, inStart, inStart + instance - 1, inMap);//右递归,分解成子问题,每次递归去除根节点,保留右子树的节点  root.right = build(preorder, inorder, preStart + instance + 1, preEnd, inStart + instance + 1, inEnd, inMap);return root;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/619525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象的三大特性

个人主页&#xff1a;告别&#xff0c;今天 个人专栏&#xff1a;java趣味之旅 ​​​​​​​本专栏旨在分享学习网络编程的学习心得和复习总结&#xff0c;欢迎大家在评论区交流讨论 1. 封装 1.1 封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象…

计算机msvcp140.dll丢失如何解决,分享3个简单有效的方法

在计算机系统运行过程中&#xff0c;用户有时会遇到一个常见的错误提示——msvcp140.dll文件缺失&#xff0c;这一问题的发生往往会导致部分软件无法正常启动或运行。“针对计算机系统中出现的msvcp140.dll缺失问题&#xff0c;小编将详尽阐述并探讨5种有效的解决策略。每一种方…

go怎么结束很多个协程呢

在Go语言中&#xff0c;可以通过使用context来结束多个协程。context包提供了用于跟踪、取消和传递截止日期的机制&#xff0c;可用于协程的生命周期管理。 以下是一个使用context取消多个协程的示例&#xff1a; package mainimport ("context""fmt"&qu…

基于springboot+html的汽车销售管理系统设计与实现

基于springboothtml的汽车销售管理系统 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 前言 随着汽车市场的快速发展&#xff0c;汽车销售企业面临着越来越大的管理…

Redis 内存碎片

一、Redis 内存碎片内存碎片是指在内存分配的时候&#xff0c;产生的不能重复利用的空间。例如&#xff0c;内存空间还有3K&#xff0c;应用程序想申请连续的3K空间&#xff0c;虽然内存空间够&#xff0c;但是空间分配为2K,1K&#xff0c;总空间够&#xff0c;但是不连续&…

【电路电子学】7天速通攻略+笔记

7天是 看视频记笔记刷题的总时长&#xff0c;时间紧迫的同学可以看情况进行缩减。个人认为做题&#xff0c;尤其是解析齐全的题最重要&#xff01; 我校所用教材 《电路与电子学基础》唐胜安 复习总流程 所用材料&#xff08;都可自行找到免费资源&#xff09; 视频知识点讲…

R2机器人加载棋盘与棋子模型,对urdf、sdf的解释(区分srdf)

1、概述 urdf、sdf、srdf文件都属于xml的规范格式&#xff0c;解释分别如下&#xff1a;urdf(unified robot description format)叫做"统一机器人描述格式"&#xff0c;主要目的就是提供一种尽可能通用的机器人描述规范&#xff0c;这样对于机器人的描述就可以互相移…

恭喜:ChatGPT之父与相恋多年的男友结婚,并希望早日生娃。。。

OpenAI CEO Sam Altman与伴侣Oliver Mulherin海边私密婚礼&#xff1a;爱情、事业与人工智能领域的交织 婚礼主持人是奥特曼的兄弟杰克奥尔特曼 壹.媒体流传 在科技界掀起波澜的OpenAI首席执行官萨姆奥尔特曼&#xff08;Sam Altman&#xff09;&#xff0c;近期与他长久以来的…

Opencv实验合集——实验九:姿势估计

在上一章节(相机校准)&#xff0c;你已经找到了相机矩阵&#xff0c;畸变系数等等参数。给出一个图案图像&#xff0c;我们便可以利用上面的信息用于计算其姿势&#xff0c;或者物体在空间中位于何处&#xff0c;比如如何旋转&#xff0c;如何移动等等问题。对于一个平面物体&a…

Java - FFM API 实现扫雷助手

文章目录 前言环境思路实现扫雷常量高度/宽度/雷数地图基址 屏幕坐标 效果资源 前言 使用 FFM API 实现扫雷助手. 环境 Win11 JDK 21 思路 读取扫雷地图数据判断该数据是否为雷模拟鼠标点击重复上面操作遍历地图直至完成 确定了思路&#xff0c;那么就要确认 windows 系…

Rust-模式解构

match 首先&#xff0c;我们看看使用match的最简单的示例&#xff1a; exhaustive 有些时候我们不想把每种情况一一列出&#xff0c;可以用一个下划线来表达“除了列出来的那些之外的其他情况”&#xff1a; 下划线 下划线还能用在模式匹配的各种地方&#xff0c;用来表示…

Java+Mysql存储过程生成订单序列号

Mysql存储过程生成唯一订单号 直接上代码&#xff01;&#xff01; 1.创建存储过程 CREATE DEFINERrootlocalhost PROCEDURE getOrderSerialNo(# 前缀in orderPrefix varchar(64), # 返回结果out result int) BEGIN# 当前流水号declare curOrderNo int;# 默认值为0declare e…

uniapp小程序超出一行显示...并展示更多按钮

注意:全部标签需要浮动在父盒子右边哦 循环获取所有需要展示数据标签的高度 this.goods this.goods.map(item > ({...item,showBtn: false}));this.$nextTick(() > {uni.createSelectorQuery().in(this).selectAll(".cart-info").boundingClientRect((data)…

yolov7中断训练后继续训练

1、训练指令 &#xff08;1&#xff09;添加resume参数&#xff0c;参数值改为true &#xff08;2&#xff09;weights参数&#xff0c;参数值改为中断前上次训练权重 中断后继续训练命令&#xff1a; python.exe train.py --weights runs/train/exp9/weights/last.pt --re…

SpringBoot3 WebFlux 可观测最佳实践

前言 链路追踪是可观测性软件系统的一个非常好的工具。它使开发人员能够了解应用程序中和应用程序之间不同交互发生的时间、地点和方式。同时让观测复杂的软件系统变得更加容易。 从Spring Boot 3开始&#xff0c;Spring Boot 中用于链路追踪的旧 Spring Cloud Sleuth 解决方…

Unity2022.3打包Android后从AB包加载场景发现丢失大量脚本问题

问题 这两天遇到一个问题&#xff0c;在VR项目打包Android的时候&#xff0c;加载场景后&#xff0c;Timeline工作不正常&#xff0c;找不到原因。 现象 看到有很多警告&#xff0c;丢失脚本的Log。 因为场景本身也有一些丢失的脚本所以没在意&#xff0c;但是又不是所有脚本…

计算机毕业设计-----SpringBoot招聘网站项目

项目介绍 SpringBoot招聘网站项目。主要功能说明&#xff1a; 管理员登录,简历管理,问答管理,职位管理,用户管理,职位申请进度更新,查看简历等功能。 用户角色包含以下功能&#xff1a;用户首页,登录注册,职位查看,职位详情,投递简历,查看我的申请,管理个人简历,附件简历管理…

紫光展锐M6780丨画质增强——更炫的视觉体验

智能显示被认为是推动数字化转型和创新的重要技术之一。研究机构数据显示&#xff0c;预计到2035年底&#xff0c;全球智能显示市场规模将达到1368.6亿美元&#xff0c;2023-2035年符合年增长率为36.4%。 随着消费者对高品质视觉体验的需求不断增加&#xff0c;智能手机、平板…

如何用ChatGPT写教案设计?以“沁园春雪”为例

1. 引言 随着人工智能技术的飞速发展&#xff0c;ChatGPT已成为教育领域的一大创新工具。ChatGPT不仅能够模拟人类对话&#xff0c;还可以帮助设计互动丰富、内容丰富的教案。本文将探索如何利用ChatGPT进行教案教学设计&#xff0c;特别是通过“沁园春雪”这一案例&#xff0…

工作上被批评,学会这5个方法管理情绪,停止内耗分享

目录 前言 1、被领导批评了&#xff0c;产生情绪波动很正常 2、为什么会产生这些情绪 一、随时随地&#xff0c;做好挨批评的心里准备 二、每时每刻&#xff0c;学会从被批评的情绪中抽离出来 三、一心一意反省&#xff0c;被批评的自身问题 四、一笔一划记下&#xff0…