代码随想录打卡第十五天

代码随想录–二叉树部分

day15 二叉树第三天


文章目录

  • 代码随想录--二叉树部分
  • 一、力扣110--平衡二叉树
  • 二、力扣257--二叉树的所有路径
  • 三、力扣404--左叶子之和
  • 四、力扣222--完全二叉树的节点个数


一、力扣110–平衡二叉树

代码随想录题目链接:代码随想录

给定一个二叉树,判断它是否是 平衡二叉树

回顾定义:平衡二叉树指的是左右子树高度相差不大于1的树

用递归的方法做,那就是比较两个子树的最大深度,如果相差大于1,则返回-1告诉上层,这是不平衡树的节点,否则返回最大深度

代码如下:

class Solution {
public:int getDepth(TreeNode * curr){if(!curr) return 0;int leftDepth = getDepth(curr->left);int rightDepth = getDepth(curr->right);if(leftDepth == -1 || rightDepth == - 1) return -1;if(abs(leftDepth - rightDepth) > 1) return - 1;return max(leftDepth, rightDepth) + 1;}bool isBalanced(TreeNode* root) {if(!root) return true;int Depth = getDepth(root);if(Depth == -1) return false;else return true;}
};

二、力扣257–二叉树的所有路径

代码随想录题目链接:代码随想录

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

这里就要用回溯了

回溯算法的想法类似于试错,一条路走到底发现错了,那就撤回几步,换另一条路走

所以本题也一样,先一条路走到底,得到一个路径后,返回上一个节点,走另一个子树,如果没有子树了,就再回去一格,重复下去

所以递归法的话,应该是传入当前树的根节点,而且有一个数组可以存这条路遍历过来的节点值

如果这个节点是叶节点,那就可以从数组中取数字出来做答案,存在result中,接着回溯

代码如下:

class Solution {
public:void traversal(TreeNode* curr, vector<int>& path, vector<string>& result){if(!curr->left && !curr->right){string temp;for(auto ele : path){temp += to_string(ele);temp += "->";}temp += to_string(curr->val);result.push_back(temp);}if(curr->left){path.push_back(curr->val);traversal(curr->left, path, result);path.pop_back();}if(curr->right){path.push_back(curr->val);traversal(curr->right, path, result);path.pop_back();            }}vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;vector<int> path;if(!root) return {};traversal(root, path, result);return result;}
};

回溯算法体现在path的push和pop,push+递归可以理解为向下试错,试错结束后pop就能体现出回溯的效果

三、力扣404–左叶子之和

代码随想录题目链接:代码随想录

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

第一反应用层序遍历秒了,但是层序遍历没法判断当前节点是不是左叶子节点,只能判断它是这层最左边的点

实际上需要通过父节点来判断当前节点是不是左叶子节点

所以传入父节点,检查其左节点不为空且左节点的左右节点为空,那么这个父节点就有一个左叶子节点,加进去就行

代码如下:

class Solution {
public:int sumOfLeftLeaves(TreeNode* root) {if(!root) return 0;int sum = 0;sum += sumOfLeftLeaves(root->left);if(root->left && !root->left->left && !root->left->right){sum += root->left->val;}sum += sumOfLeftLeaves(root->right);return sum;}
};

四、力扣222–完全二叉树的节点个数

代码随想录题目链接:代码随想录

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

这个真的是层序遍历秒了

代码如下:

class Solution {
public:int countNodes(TreeNode* root) {if(!root) return 0;queue<TreeNode *> que;que.push(root);int result = 0;while(!que.empty()){int length = que.size();for(int i = 0; i < length ; i ++){result ++;TreeNode * curr = que.front(); que.pop();if(curr->left) que.push(curr->left);if(curr->right) que.push(curr->right);/*Add function here*/}}return result; }
};

模板参考链接:层序遍历

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

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

相关文章

关于DB_CREATE_FILE_DEST初始化参数

DB_CREATE_FILE_DEST指定了OMF的默认位置。 OMF指 Oracle Managed Files&#xff0c;OMF指定一个文件系统中的目录&#xff0c;数据库会在此目录中自动创建、命名和管理数据库对象级别的文件。 OMF用的较多的是数据文件。 来看一个例子。已有一个PDB&#xff1a;orclpdb1&am…

springboot学生档案信息管理系统-计算机毕业设计源码96509

目 录 第 1 章 引 言 1.1 选题背景 1.2 研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统性需求分析…

GBase 8c V5 主备式部署手册

GBase 8c V5 主备式部署实操 一、前言二、环境准备三、安装四、数据库启停五、卸载六、连接和 SQL 测试 一、前言 GBase 8c 是 GBASE公司&#xff08;天津南大通用数据技术股份有限公司&#xff09;自主研发的一款多模多态的企业级分布式数据库&#xff1a;支持行存、列存、内存…

JAVA程序打包时报错,但是运行时正常。

报错&#xff1a;Could not transfer artifact com.alibaba:fastjson:pom:1.2.83 from/to clojars... 背景&#xff1a;需要将fastjson从1.2.70升级到1.2.83&#xff1b;并且编译环境是局域网不可以连接互联网&#xff1b;每个项目组都是独立的私有仓库。 操作&#xff1a;在本…

Failed to download metadata for repo ‘docker-ce-stable‘

这个问题是由于在安装 clamav 和 clamav-update 时&#xff0c;无法下载 Docker CE Stable 库的元数据&#xff0c;可能的原因是网络连接超时或访问该网址受限。以下是一些可能的解决办法&#xff1a; 检查网络连接&#xff1a; 确保服务器的网络连接正常&#xff0c;尤其是与互…

海外发稿: 秘鲁-区块链新闻媒体通稿宣发

秘鲁媒体单发 随着全球化的不断深入&#xff0c;海外发稿已经成为众多企业宣传推广的重要方式之一。而在海外发稿的选择中&#xff0c;秘鲁媒体的地位尤为重要。秘鲁作为南美洲的重要国家之一&#xff0c;拥有众多知名媒体平台&#xff0c;包括diariodelcusco、serperuano、el…

mysql8 导入导出工具类,支持windows 和linux

概述 1&#xff09;导入导出工具类 支持windows 和linux&#xff0c;详见第3部分 2&#xff09;导入、导出参数在 dbeaver 中应用&#xff0c;详见第4部分 整理原因: 1&#xff09;中文乱码 --default-character-setutf8 2&#xff09;BLOB 导出后&#xff0c;导入失败 --he…

Qt(二)弹窗类 颜色对话框 字体对话框 资源文件

文章目录 一、QDebug类和QMessagebox类&#xff08;一&#xff09;QDebug类&#xff1a;打印调试类&#xff08;二&#xff09;QMessagebox类&#xff1a;弹窗类2. 修改组件图标&#xff08;1&#xff09;通过ui界面&#xff08;2&#xff09;通过QIcon的方式&#xff08;3&…

数据结构-字符串

字符串 什么是字符串&#xff1f; 字符串是在任何编程语言中都非常重要的一种数据类型。 在 Python 中&#xff0c;字符串是由引号包裹的任意字符组成的不可变序列&#xff0c;用于表示文本类型数据。 字符串定义 字符串可以通过使用 单引号 或 双引号 或 三引号 来定义&a…

【笔试记录】腾讯音乐 | 20230903 | cpp (更新ing)

1 完美数 1.1 题目描述 小红定义一个数为“完美数”&#xff0c;当且仅当该数仅有一个非零数字。例如 5000, 4, 1, 10, 200 都是完美数。 小红拿到了一个大小为 n&#xff08;2 < n < 2000&#xff09;的数组 a&#xff0c;她希望选择数组中的两个元素&#xff08;1 …

代码随想录算法训练营第75天:总结篇[1]

代码随想录算法训练营第75天&#xff1a;总结篇 代码随想录姑且是都过了一遍了&#xff0c;最开始了解到的时候还不会c语法&#xff0c;跟着学习还是有难度的&#xff0c;也很难坚持着去写题&#xff0c;后面决定加入训练营与大家齐头并进&#xff0c;刚开始气氛很好&#xff…

【CentOS 7 上安装 Oracle JDK 8u333】

文章目录 下载 Oracle JDK 8u333&#xff1a;上传 RPM 包到服务器安装 Oracle JDK设置 JAVA_HOME 环境变量验证 下载 Oracle JDK 8u333 访问 https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 找到 JDK 8u333 版本&#xff0c;并下载适用于 L…

TTS文本转声音:fish-speech 推理、requests访问接口案例

参考: https://hub.docker.com/r/lengyue233/fish-speech https://speech.fish.audio/inference/#http-api 下载 下载模型: HF_ENDPOINT=https://hf-mirror.com huggingface-cli download fishaudio/fish-speech-1.2 --local-dir checkpoints/fish-speech-1.2下载的内容有…

maven项目、idea抽风问题解决

开发的时候遇到奇奇怪怪的非技术问题&#xff0c;解决起来会费时间&#xff0c;做无用功。   这里记录常见的情况和解决方法 1.未识别maven项目 文件的图标变成了这种橙色的&#xff0c;而且有主启动函数也不能run 右键pom文件&#xff0c;点击Add as Maven Project 如果…

【在大模型RAG系统中应用知识图谱】

【引子】 关于大模型及其应用方面的文章层出不穷&#xff0c;聚焦于自己面对的问题&#xff0c;有针对性的阅读会有很多的启发&#xff0c;本文源自Whyhow.ai 上的一些文字和示例。对于在大模型应用过程中如何使用知识图谱比较有参考价值&#xff0c;特汇总分享给大家。 在基于…

c语言的字符串拷贝函数strcpy()的行为

/*** 字符串函数* 符串复制函数* strcpy()和strncpy()* 覆盖行为** strcpy()简单易用&#xff0c;但需要程序员确保目标缓冲区足够大&#xff0c;以避免缓冲区溢出。* strncpy()提供了限制复制字符数的能力&#xff0c;增加了安全性&#xff0c;* 但使用时需注意目标字符串可能…

知识图谱构建助手安装配置使用!Sapphire Ventures最全Sales AI图谱:AI如何重塑销售行业?

知识图谱构建助手安装配置使用!Sapphire Ventures最全Sales AI图谱:AI如何重塑销售行业? 项目简介 llmgraph 使您能够从给定的源实体维基百科页面创建 GraphML、GEXF 和 HTML 格式(通过 pyvis 生成)的知识图。知识图谱是通过从 ChatGPT 或 LiteLLM 支持的其他大型语言模型…

算法训练营第七十六天(最后一天、完结撒花) | Bellmanford之单源有限最短路、Floyd算法、A*算法

算法训练营最后一天 | Bellmanford之单源有限最短路、Floyd算法、A*算法 Bellmanford之单源有限最短路 题目连接&#xff1a; https://kamacoder.com/problempage.php?pid1154 在之前的基础上松弛k1次而不是n1次即可 #include <iostream> #include <vector> #…

14-8 小型语言模型的兴起

过去几年&#xff0c;我们看到人工智能能力呈爆炸式增长&#xff0c;其中很大一部分是由大型语言模型 (LLM) 的进步推动的。GPT-3 等模型包含 1750 亿个参数&#xff0c;已经展示了生成类似人类的文本、回答问题、总结文档等能力。然而&#xff0c;虽然 LLM 的能力令人印象深刻…