代码随想录算法训练营第17天 | 110.平衡二叉树 + 257. 二叉树的所有路径 + 404.左叶子之和

今日内容

  •  110.平衡二叉树 
  •  257. 二叉树的所有路径 
  •  404.左叶子之和

110.平衡二叉树 - Easy

题目链接:. - 力扣(LeetCode)

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

思路:递归法,注意区分深度和高度

class Solution {
public:// 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1int getHeight(TreeNode* node) {if (node == NULL) {return 0;}int leftHeight = getHeight(node->left);if (leftHeight == -1) return -1;int rightHeight = getHeight(node->right);if (rightHeight == -1) return -1;return abs(leftHeight - rightHeight) > 1 ? -1 : 1 + max(leftHeight, rightHeight);}bool isBalanced(TreeNode* root) {return getHeight(root) == -1 ? false : true;}
};

257. 二叉树的所有路径 - Easy

题目链接:力扣-257. 二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

思路:递归法,其实实现的是回溯

class Solution {
private:void traversal(TreeNode* cur, vector<int>& path, vector<string>& result) {path.push_back(cur->val); // 中,中为什么写在这里,因为最后一个节点也要加入到path中 // 这才到了叶子节点if (cur->left == NULL && cur->right == NULL) {string sPath;for (int i = 0; i < path.size() - 1; i++) {sPath += to_string(path[i]);sPath += "->";}sPath += to_string(path[path.size() - 1]);result.push_back(sPath);return;}if (cur->left) { // 左 traversal(cur->left, path, result);path.pop_back(); // 回溯}if (cur->right) { // 右traversal(cur->right, path, result);path.pop_back(); // 回溯}}public:vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;vector<int> path;if (root == NULL) return result;traversal(root, path, result);return result;}
};

404.左叶子之和 - Easy

题目链接:力扣-404. 左叶子之和

给定二叉树的根节点 root ,返回所有左叶子之和。 

思路:递归法 

class Solution {
public:int sumOfLeftLeaves(TreeNode* root) {if (root == NULL) return 0;if (root->left == NULL && root->right== NULL) return 0;int leftValue = sumOfLeftLeaves(root->left);    // 左if (root->left && !root->left->left && !root->left->right) { // 左子树就是一个左叶子的情况leftValue = root->left->val;}int rightValue = sumOfLeftLeaves(root->right);  // 右int sum = leftValue + rightValue;               // 中return sum;}
};

今日总结

第一题注意区分高度和深度,第二题回溯搞得不是很明白

 

 

 

 

 

 

 

 

 

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

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

相关文章

MES系统如何进行产品的质量管理

质量管理重点是对产品的检验&#xff0c;这里面包括&#xff1a;采购来料检验、工序检验、入库前检验等几个检验环节&#xff0c;并根据系统设定的检验标准进行检验&#xff0c;检验不通过的不能留到下个环节。质量管理也是万界星空科技云MES中的一个重要组成部分&#xff0c;旨…

【深度学习】Anaconda3 + PyCharm 的环境配置 1:手把手带你安装 PyTorch 并创建 PyCharm 项目

前言 文章性质&#xff1a;实操记录 &#x1f4bb; 主要内容&#xff1a;这篇文章记录了 PyTorch 的安装过程&#xff0c;包括&#xff1a; 1. 创建并激活新的虚拟环境&#xff1b; 2. 查看电脑是否支持 CUDA 以及 CUDA 的版本&#xff1b; 3. 根据 CUDA 的版本安装 PyTorch&am…

NAND Separate Command Address (SCA) 接口命令解读

CA output packet和CA input packet是Separate Command Address (SCA) NAND接口协议中用于命令和地址传输的关键数据结构。 CA Input Packet: 在SCA接口中&#xff0c;输入到NAND器件的命令和地址信息被组织成并行至串行转换的CA&#xff08;Command and Address&#xff09;输…

主动学习基础-贝叶斯神经网络

引言 传统的深度神经网络一般都有过度自信的问题。 即使我给神经网络提供一个从来没有训练过的类别图像&#xff0c;神经网络也会输出一个类别。比如训练猫狗的分类器&#xff0c;如果你抛出一个人的图像&#xff0c;网络也会将其分类为猫或者狗。 在几乎所有现实世界的问题中…

【论文阅读】Self-supervised Learning: Generative or Contrastive

Abstract 研究了在计算机视觉、自然语言处理和图形学习中用于表示的新的自监督学习方法。全面回顾了现有的实证方法&#xff0c;并根据其目的将其归纳为三大类&#xff1a;生成性、对比性和生成性对比&#xff08;对抗性&#xff09;。进一步收集了关于自我监督学习的相关理论…

亚信安慧AntDB超融合数据库:拓展亿级用户系统的智能化新纪元

在面对亿级用户规模的系统建设需求时&#xff0c;传统数据库往往面临诸多挑战。为了满足多样化的技术要求&#xff0c;项目通常需要倚赖多套技术体系&#xff0c;例如&#xff0c;一套关系型数据库用于元数据管理和标签化管理&#xff0c;另一套则专注于非结构化文件的处理。这…

软件测试|深入了解PyCharmDebug功能:逐步调试Python代码

简介 PyCharm作为一款强大的Python集成开发环境&#xff0c;提供了丰富的调试功能&#xff0c;可以帮助开发者轻松定位和解决代码问题。本文将详细介绍如何在PyCharm中使用Debug功能&#xff0c;并通过示例演示其实际应用。 debug 步骤 打开项目&#xff1a; 打开PyCharm&…

因成本不断增加,阿里云发布区域调价公告|一周IT资讯

因成本不断增加&#xff0c;阿里云发布域名调价公告 1月9日晚&#xff0c;阿里云在官网发布域名调价公告&#xff1a;因注册局成本上调、域名实名制审核等服务成本不断增加&#xff0c;经慎重考虑&#xff0c;现决定于2024年2月1日&#xff0c;对 .net 英文域名进行价格调整&a…

关于自动化测试用例失败重试的一些思考

动化测试用例失败重跑有助于提高自动化用例的稳定性&#xff0c;那我们来看一下&#xff0c;python和java生态里都有哪些具体做法&#xff1f; 怎么做 如果是在python生态里&#xff0c;用pytest做测试驱动&#xff0c;那么可以通过pytest的插件pytest-rerunfailures来实现失…

apipost 前端使用云端mock实现自定义返回

目录 一.新建接口 1.选择mock环境 2.设置接口路径&#xff0c;以及相关参数 3.自定应响应示例 4.开启云端mock,设置相应条件 5.更改接口类型post,保存设置&#xff0c;发送请求 6.测试 一.新建接口 1.选择mock环境 如图&#xff0c;更改环境 2.设置接口路径&#xff0c…

Mr_HJ / form-generator项目文档学习与记录(续2)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

Android开发基础(四)

Android开发基础&#xff08;四&#xff09; 本篇将从Android数据存储方式去理解Android开发。 Android数据存储方式 Android提供了多种数据存储方式。 一、SharedPreferences存储 主要用于存储一些简单的配置信息&#xff0c;如登录账号密码等&#xff1b; 这种存储方式采…