代码随想录算法训练营DAY18 | 二叉树 (5)

一、LeetCode 513 找树左下角的值

题目链接:513.找树左下角的值icon-default.png?t=N7T8https://leetcode.cn/problems/find-bottom-left-tree-value/

思路一:递归+回溯+全局变量比深度。

class Solution {int Max_depth = 0;int result = 0;public int findBottomLeftValue(TreeNode root) {travel(root,0);return result;}public void travel(TreeNode root, int depth){if(root.left == null && root.right == null){if(depth > Max_depth){Max_depth = depth;result = root.val;}}if(root.left != null){depth++;travel(root.left,depth);//回溯depth--;}if(root.right != null){depth++;travel(root.right,depth);depth--;}return;}
}
/*** 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 int findBottomLeftValue(TreeNode root) {Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);int ans = 0;while(!queue.isEmpty()){int size = queue.size();for(int i = 0; i < size; i++){TreeNode node = queue.poll();//记录最后一行第一个值,即为树左下角的值if(i == 0){ans = node.val;}if(node.left != null){queue.offer(node.left);}if(node.right != null){queue.offer(node.right);}}}return ans;}
}

 二、LeetCode 112 路径总和

题目链接:112.路径总和icon-default.png?t=N7T8https://leetcode.cn/problems/path-sum/

思路:前序遍历 + 叶子结点判断~

class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {int sum = 0;return flag(root,targetSum,sum);}public boolean flag(TreeNode root, int target, int sum){if(root == null){return false;}//中 左 右sum += root.val;if(root.left == null && root.right == null){if(sum == target){return true;}}boolean left = flag(root.left, target, sum);boolean right = flag(root.right, target, sum);return left || right;}
}
/*** 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;*     }* }*/

 三、LeetCode 106 从中序与后序遍历序列构造二叉树

题目链接:106.从中序与后序遍历序列构造二叉树icon-default.png?t=N7T8https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/

思路:左闭右开,分割左右子树。

class Solution {Map<Integer,Integer> map = new HashMap<>();public TreeNode buildTree(int[] inorder, int[] postorder) {for(int i = 0; i < inorder.length; i++){map.put(inorder[i],i);}return findNode(inorder, 0, inorder.length, postorder, 0, postorder.length);}public TreeNode findNode(int[] inorder, int inBegin, int inEnd, int[] postorder, int postBegin, int postEnd){//不满足左闭右开,返回空值if(inBegin >= inEnd || postBegin >= postEnd){return null;}//找到后序遍历最后一个元素在中序遍历中的位置int rootIndex = map.get(postorder[postEnd-1]);TreeNode root = new TreeNode(inorder[rootIndex]);int lenOfleft = rootIndex - inBegin;//利用中序遍历分左右子树,后序遍历左右子树节点个数与中序相同->分割后序遍历root.left = findNode(inorder, inBegin, rootIndex, postorder, postBegin, postBegin+lenOfleft);root.right = findNode(inorder, rootIndex+1, inEnd, postorder, postBegin+lenOfleft, postEnd-1);return root;}
}
/*** 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;*     }* }*/

 四、小结

        昨天有点事情,今日补上~

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

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

相关文章

“分布式透明化”在杭州银行核心系统上线之思考

导读 随着金融行业数字化转型的需求&#xff0c;银行核心系统的升级改造成为重要议题。杭州银行成功上线以 TiDB 为底层数据库的新一代核心业务系统&#xff0c;该实践采用应用与基础设施解耦、分布式透明化的设计开发理念&#xff0c;推动银行核心系统的整体升级。 本文聚焦…

2024 年 11 款最佳 iPhone 数据恢复软件和应用程序

数据丢失是任何人都无法承受的&#xff0c;因为它对每个人都至关重要。但导致数据丢失的原因有很多&#xff0c;一些常见的原因是意外删除数据、设备被盗、iOS 越狱、硬件损坏、病毒感染等。我们列出了 iOS 的顶级恢复工具&#xff0c;其中包括&#xff1a;将帮助您方便地恢复数…

【AIGC】Stable Diffusion的生成参数入门

Stable Diffusion 的生成参数是用来控制图像生成过程的重要设置&#xff0c;下面是一些常见的生成参数及其详解 1、采样器&#xff0c;关于采样器的选择参照作者的上一篇文章 2、采样步数&#xff08;Sampling Steps&#xff09;是指在生成图像时模型执行的总步数&#xff0c…

一、ActiveMQ介绍

ActiveMQ介绍 一、JMS1.jms介绍2.jms消息传递模式3.JMS编码总体架构 二、消息中间件三、ActiveMQ介绍1.引入的原因1.1 原因1.2 遇到的问题1.3 解决思路 2.定义3.特点3.1 异步处理3.2 应用系统之间解耦3.3 实际-整体架构 4.作用 一、JMS 1.jms介绍 jms是java消息服务接口规范&…

Apache POI | Java操作Excel文件

目录 1、介绍 2、代码示例 2.1、将数据写入Excel文件 2.2、读取Excel文件中的数据 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c;初步…

基于Python实现Midjourney集成到(个人/公司)平台中

目前Midjourney没有对外开放Api&#xff0c;想体验他们的服务只能在discord中进入他们的频道进行体验或者把他们的机器人拉入自己创建的服务器中&#xff1b;而且现在免费的也用不了了&#xff0c;想使用就得订阅。本教程使用midjourney-api这个开源项目&#xff0c;搭建Midjou…

系统可靠性分析与设计

一、考点分析 可靠性相关基本概念&#xff08;※※&#xff09;系统可靠性分析&#xff08;※※※※&#xff09;软件可靠性设计&#xff08;※※※※&#xff09; 二、可靠性相关基本概念 可靠性&#xff1a;软件系统在应用或系统错误面前&#xff0c;在意外或错误使用的情况下…

搜索Agent方案

为啥需要整体方案&#xff0c;直接调用搜索接口取Top1返回不成嘛&#xff1f;要是果真如此Simple&Naive&#xff0c;New Bing岂不是很容易复刻->.-> 我们先来看个例子&#xff0c;前一阵火爆全网的常温超导技术&#xff0c;如果想回答LK99哪些板块会涨&#xff0c;你…

【初始C++】引用的概念及使用场景、引用与指针的区别、内联函数、类型推导关键字auto、范围for循环、指针空值nullptr

目录 1.引用 1.1引用的概念 1.2引用的特性 1.3使用场景 1.4引用与指针的区别 2.内联函数 2.1内联函数的概念 2.2内联函数的特征 3.auto关键字&#xff08;C11&#xff09; 4.基于范围的for循环&#xff08;C11&#xff09; 5.指针空值nullptr&#xff08;C11&#x…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第四天-ARM Linux编程之IIC与uart (物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 教学内容&#xff1a; 1、I2C总线&#xff1a; I2C&#xff08;Inter&#xff0d;Integrated Circuit),PHILIPS公司开发的两线式半双工同步串行总线&#xff1b;可以用来连…

C/C++重点解析——内存管理

1. C/C内存分布 我们先来看一段代码和其相关问题&#xff1a; int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd"…

中科大计网学习记录笔记(十一):CDN

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

【读书笔记】ICS设备及应用攻击(一)

工控系统通常是由互联设备所构成的大型复杂系统&#xff0c;这些设备包括类似于人机界面&#xff08;HMI&#xff09;、PLC、传感器、执行器以及其他使用协商好的协议进行相互通信的设备。所有交互背后的驱动力都是软件&#xff0c;软件为工控系统中几乎所有部分的运行提供支撑…

2月12号

第一种判断方式 if (n 10) 更好&#xff0c;因为它具有更好的可读性、可以避免误操作&#xff0c;并符合常见的编程习惯和约定

问题:下列不属于影响职业选择的内在因素是()。 #微信#微信

问题&#xff1a;下列不属于影响职业选择的内在因素是&#xff08;&#xff09;。 A.健康 B.个性特征 C.性别 D.家庭的影响 参考答案如图所示

程序员搞什么副业才有性价比?

干一行恨一行&#xff0c;三百六十行&#xff0c;行行干破防&#xff01; 一份稳定的主业固然重要&#xff0c;但是有性价比的副业更令人心动。朝九晚五的工作日复一日&#xff0c;当然也可能是996的生活反复捶打。从整体来讲&#xff0c;程序员算是高收入群体&#xff0c;但往…

C++ 图上 bfs(五十八)【第五篇】

今天我们来学习一下图上bfs。 1.图上bfs 在图上&#xff0c;我们也可以进行 BFS&#xff0c;也可以解决图上 DFS 能解决的问题&#xff0c;比如连通块。 除此以外&#xff0c;根据 BFS 的性质&#xff0c;第一次到一个点的时候记下来的步数一定是到从起点到这个点的最小步数&…

【论文精读】GPT2

摘要 在单一领域数据集上训练单一任务的模型是当前系统普遍缺乏泛化能力的主要原因&#xff0c;要想使用当前的架构构建出稳健的系统&#xff0c;可能需要多任务学习。但多任务需要多数据集&#xff0c;而继续扩大数据集和目标设计的规模是个难以处理的问题&#xff0c;所以只能…

PR:视频编辑播放速度技巧

想要视频片段加速或者减速&#xff0c;可以在片段上右击&#xff0c;选择“速度/持续时间...” 速度&#xff1a;可以更改百分比&#xff0c;如改成200%就是加速一倍&#xff0c;改成50%就是减速一倍。 注&#xff1a;如果源视频是正常速度录制的&#xff0c;比如每秒25帧&…

CSS弹性布局

CSS弹性布局 一、概念 ​ 弹性盒子是 CSS3 的一种新的布局模式。 ​ CSS3 弹性盒&#xff08; Flexible Box 或 flexbox&#xff09;&#xff0c;是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。 ​ 引入弹性盒布局模型的目的是提供一…