代码随想录算法训练营第十七天| 110.平衡二叉树、257. 二叉树的所有路径、 404.左叶子之和 (优先掌握递归)

110.平衡二叉树

  • 刷题icon-default.png?t=N7T8https://leetcode.cn/problems/balanced-binary-tree/description/
  • 文章讲解icon-default.png?t=N7T8https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html
  • 视频讲解icon-default.png?t=N7T8https://www.bilibili.com/video/BV1Ug411S7my/?vd_source=af4853e80f89e28094a5fe1e220d9062
  • 题解(递归):
/*** 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 getHeight(TreeNode root){//若遍历到空结点,说明为最小高度0if(root == null){return 0;}//递归求左子树高度int leftHeight = getHeight(root.left);//该分支之前已经有非平衡子树if(leftHeight == -1){return -1;}//递归求右子树高度int rightHeight = getHeight(root.right);//该分支之前已经有非平衡子树if(rightHeight == -1){return -1;}//左右子树高度差大于1,第一次遇见非平衡树,return -1;if(Math.abs(leftHeight - rightHeight) > 1){return -1;}//正常情况return Math.max(leftHeight, rightHeight) + 1;}public boolean isBalanced(TreeNode root) {return getHeight(root) != -1;}
}

257. 二叉树的所有路径

  • 刷题icon-default.png?t=N7T8https://leetcode.cn/problems/binary-tree-paths/description/
  • 文章讲解icon-default.png?t=N7T8https://programmercarl.com/0257.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.html
  • 视频讲解icon-default.png?t=N7T8https://www.bilibili.com/video/BV1ZG411G7Dh/?vd_source=af4853e80f89e28094a5fe1e220d9062
  • 题解(递归):
/*** 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<String> binaryTreePaths(TreeNode root) {List<String> result = new ArrayList<>();if(root == null){return result;}List<Integer> paths = new ArrayList<>();traversal(root, paths, result);return result;}public void traversal(TreeNode root, List<Integer> paths, List<String> result){//中序中的中paths.add(root.val);//中序的左if(root.left != null){//递归,加入左结点元素traversal(root.left, paths, result);//回溯,路径中弹出最后一个元素paths.remove(paths.size() - 1);}//中序的右if(root.right != null){traversal(root.right, paths, result);paths.remove(paths.size() - 1);}//如果走到叶子结点,说明这条路走到底,将path中的路径进行处理并返回上一级if(root.left == null && root.right == null){StringBuilder sb = new StringBuilder();//字符串处理,将当前路径字符串做加箭头处理for(int i = 0; i < paths.size() - 1; i++){sb.append(paths.get(i)).append("->");}sb.append(paths.get(paths.size() - 1));//箭头处理结束,转为字符串result.add(sb.toString());//该条路径处理结束,返回继续下一条路径的回溯return;}}
}

404.左叶子之和 

  • 刷题icon-default.png?t=N7T8https://leetcode.cn/problems/sum-of-left-leaves/description/
  • 文章讲解icon-default.png?t=N7T8https://programmercarl.com/0404.%E5%B7%A6%E5%8F%B6%E5%AD%90%E4%B9%8B%E5%92%8C.html
  • 视频讲解icon-default.png?t=N7T8https://www.bilibili.com/video/BV1GY4y1K7z8/?vd_source=af4853e80f89e28094a5fe1e220d9062
  • 题解(递归):
/*** 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 sumOfLeftLeaves(TreeNode root) {if(root == null){return 0;}//左分支递归int leftValue = sumOfLeftLeaves(root.left);//右分支递归int rightValue = sumOfLeftLeaves(root.right);int midValue = 0;//核心判断逻辑,以父结点为基础判断当前结点是否为左叶子结点if(root.left != null && root.left.left == null && root.left.right == null){midValue = root.left.val;}//中处理,对所有情况进行加和int sum = midValue + leftValue + rightValue;return sum;}
}

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

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

相关文章

Android14之Android Rust模块编译语法(一百八十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

仰暮计划|“后来经历过大饥荒,饿得吃树皮、挖野菜,天天吃不饱饭”

去姥姥家之前就给姥姥打电话说&#xff0c;要去采访姥姥&#xff0c;给她写回忆录&#xff0c;姥姥有些意外&#xff0c;开心地笑着又有些害羞。 姥姥出生于1940年&#xff0c;家中六个孩子&#xff0c;两个哥哥都是军人。姥姥小时候长得很漂亮&#xff0c;又总是生病&#xf…

前端秘法进阶篇之事件循环

目录 一.浏览器的进程模型 1.进程 2.线程 二.浏览器的进程和线程 1. 浏览器进程 2. 网络进程 3. 渲染进程 三.渲染主线程 四.异步 五.优先级 1. 延时队列&#xff1a; 2.交互队列&#xff1a; 3.微队列&#xff1a; 六.JS 的事件循环 附加:JS 中的计时器能做到精…

AI - 碰撞避免算法分析(ORCA)

对比VO/RVO ORCA算法检测碰撞的原理和VO/RVO基本一样的&#xff0c;只是碰撞区域的计算去掉了一定时间以外才可能发生的碰撞&#xff0c;因此碰撞区域的扇形去掉了前面的部分&#xff0c;由圆锥头变成了个圆 另一个最主要的区别是&#xff0c;求新的速度&#xff0c;是根据相…

AndroidStdio修改安卓模拟器的安装位置

AndroidStdio修改安卓模拟器的安装位置 1.删除原有的虚拟机 可以直接删除这个avd文件&#xff0c;放心大胆删除 在这个目录下可以看到.avd文件和.ini文件。.avd占了我10G.上图是我转移.avd后截的。发现这个.ini文件&#xff0c;.ini文件就是配置文件&#xff0c;就像mysql安装…

腾讯云4核8G服务器够用吗?能支持多少人?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

Linux--常用命令(详解)

详细目录 一、终端命令格式二、显示文件列表命令-ls2.1作用2.2格式2.3 ls常用选项2.3.1 ls -a2.3.2 ls -l(等价于 ll)2.3.2 ls -h 三、相对路径与绝对路径3.1绝对路径3.2相对路径 四、目录操作命令 -cd4.1作用4.2格式4.3案例4.3.1 cd -&#xff1a; 返回上一次所在目录4.3.2 cd…

BUGKU-WEB 社工-初步收集

题目描述 题目截图如下&#xff1a; 描述:其实是杂项&#xff0c;勉强算社工吧。来自当年实战 进入场景看看&#xff1a; 解题思路 做题先看源码关注可下载的资源(zip压缩包)抓包寻找可能存在的加密信息&#xff08;base64&#xff09;不管三七二十一先扫描目录再说 ps&…

什么是内存对齐?如何计算结构体类型的大小?

结构体内存对齐与结构体类型的大小 运行这样一段代码 我们想要计算这两个结构体类型的大小&#xff0c;而这个结构体类型里面成员变量有一个int类型和两个char类型&#xff0c;大小加起来应该是六个字节&#xff0c;但是我们打印出来发现&#xff0c;结果居然是12和8&#xff…

Pycharm里如何设置多Python文件并行运行

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夕阳何事近黄昏&#xff0c;不道人间犹有未招魂。 大家好&#xff0c;我是皮皮。 一、前言 相信使用Pycharm的粉丝们肯定有和我一样的想法&#xff0c;…

【顶刊|修正】多区域综合能源系统热网建模及系统运行优化【复现+延伸】

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序复现《多区域综合能源系统热网建模及系统运行优化》模型并进一步延伸&#xff0c;基于传热学的基本原理建立了区域热网能量传输通用模型&#xff0c;对热网热损方程线性化实现热网能量流建模&#xff…

CTFshow web(文件上传151-154)

web151 哈&#xff0c;都直接送嘴边了&#xff0c;前端检测领域的问题&#xff0c;那就改前端啊&#xff0c;作者都直接提示了&#xff01; 第一种方法也是最好用的就是直接把前端内容的png改成php就好 这里教大家一个非常好用的技巧&#xff0c;可以极大节省你的时间&#xf…