实习冲刺第二十天

543.二叉树的直径

给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。

示例 1:

输入:root = [1,2,3,4,5]
输出:3
解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

思路详解:这里我们不再采用上几期的方法对二叉树进行正序操作,这里我们先遍历到二叉树的叶子节点然后在递归回退的时候记录左子树和右子树的高度,将他们相加并逐次比较每次相加的值,直到取到最大值返回即可,

代码详解:

class Solution {
public:int deepth=0;//记录深度int diameterOfBinaryTree(TreeNode* root) {depth(root);return deepth;}int depth(TreeNode*root){if(root==nullptr){return 0;//如果根节点为空返回0}int left=depth(root->left);//走到左子树的最底端int right=depth(root->right);//走到右子树的最底端deepth=max(deepth,left+right);//求得左右子树相加的最大值return max(left,right)+1;//最后走过的路径需要+1}
};

面经:

  1. c++的异常处理机制是怎样的,什么情况下使用异常处理,优缺点是什么

C++的异常处理机制提供了一种处理程序运行中发生的错误或异常情况的方法。这种机制通过以下几个关键字来实现:try、catch、throw。

当程序可能出现错误,并且这种错误无法通过正常的流程处理时或当需要区分不同类型的错误,并且针对每种错误采取不同的处理措施时我们需要进行异常处理。

1. try 块:将可能抛出异常的代码放在 try 块中。如果在 try 块中的代码执行时发生异常,它会被抛出。

2. throw 表达式:当发生错误时,使用 throw 关键字来抛出一个异常。异常可以是任何类型的对象。

3. catch 子句:紧跟在 try 块后面的是一系列的 catch 子句,每个 catch 子句都是一个异常处理程序,用来处理特定类型的异常。

异常处理例子:

#include<iostream>
#include<vector>
using namespace std;int main()
{vector<int> vec;try{vec.at(4);//数组越界操作}catch (exception& e)//所有异常的基类,这里是子类引用父类{cout << 2 << endl;cout << e.what() << endl;}}

 当然我们也可以定义自己的异常

#include<iostream>
#include<vector>
#include<string>
using namespace std;
class MyExcetion
{
private:string msg;
public:MyExcetion(string str):msg(str){}MyExcetion(const MyExcetion& other){this->msg = other.msg;cout << "拷贝构造" << endl;}void what(){cout << msg << endl;}
};
int fun(int a, int b)
{if (b == 0){MyExcetion m("---异常,除数不能为0---");throw m;}return a / b;
}int main()
{try{fun(1, 0);}catch (MyExcetion& e){e.what();}cout << "虽有异常但未终止";
}
//运行结果:
//拷贝构造
//---异常,除数不能为0---
//虽有异常但未终止

优点:

异常传递:异常可以跨多个函数调用层次传递到能够处理它的地方。

类型安全:可以指定异常的类型,catch 块可以针对不同类型的异常提供不同的处理方式。

缺点:

性能开销:抛出和捕获异常可能会带来一定的性能损失,尤其是在性能要求很高的场合。

滥用可能导致代码混乱:如果过度使用异常处理,可能会导致代码逻辑不清晰,难以维护。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

搜索引擎算法解析提升搜索效率的关键要素

内容概要 搜索引擎算法是指一系列计算机程序和规则&#xff0c;用于决定如何抓取、索引和提供网页信息。了解这些算法的核心概念对于提高我们的搜索效率至关重要。本文将详细分析搜索引擎的工作原理和主要算法类型&#xff0c;以及它们如何影响搜索结果的准确性和用户体验。 …

Brave127编译指南 Windows篇:配置Git(四)

1. 概述 在Brave浏览器的开发过程中&#xff0c;Git作为核心版本控制工具扮演着不可或缺的角色。作为当今最广泛使用的分布式版本控制系统&#xff0c;Git为开发者提供了强大的源码管理能力。通过Git&#xff0c;您可以轻松追踪代码变更、管理不同版本&#xff0c;并与其他开发…

使用React和Vite构建一个AirBnb Experiences克隆网站

这一篇文章中&#xff0c;我会教你如何做一个AirBnb Experiences的克隆网站。主要涵盖React中Props的使用。 克隆网站最终呈现的效果&#xff1a; 1. 使用vite构建基础框架 npm create vitelatestcd airbnb-project npm install npm run dev2. 构建网站的3个部分 网站从上…

LC68----222. 完全二叉树的节点个数(java版)---树

1. 题目描述 完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点…

206面试题(71~80)

208道Java面试题 文章目录 **208道Java面试题** **71. 如何避免 SQL 注入&#xff1f;****72. 什么是 XSS 攻击&#xff0c;如何避免&#xff1f;****73. 什么是 CSRF 攻击&#xff0c;如何避免&#xff1f;****74. throw 和 throws 的区别&#xff1f;****75. final、finally、…

快速安装mysql5.7.44

参考文档&#xff1a; Windows系统上安装MySQL 5.7步骤&#xff08;实测可行&#xff09;_mysql5.7 windows-CSDN博客 MySQL 5.7压缩包安装图文教程(超详细)_Mysql_脚本之家 关键点&#xff1a; 参数文件内容参考&#xff1a; ALTER USER rootlocalhost IDENTIFIED WITH mys…

大数据新视界 -- 大数据大厂之 Impala 性能提升:高级执行计划优化实战案例(下)(18/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

数字经济新时代,高校数字经济专业人才培养如何与产业对接?

一、数字经济发展及人才需求 &#xff08;一&#xff09;数字经济蓬勃发展 数字经济已成为驱动中国经济实现发展的新引擎&#xff0c;据中国信通院数据&#xff0c;2023年&#xff0c;我国数字经济规模达到53.9万亿元&#xff0c;数字经济占GDP比重达到42.8&#xff05;&#x…

【SpringBoot】21 @Async异步任务线程池的隔离

Git仓库 https://gitee.com/Lin_DH/system 介绍 线程池隔离&#xff1a;指一种通过为每个服务提供独立的线程池来隔离服务之间的资源和执行环境的做法。 为什么需要线程池隔离&#xff1f; 资源隔离&#xff0c;每个服务都有独立的线程池&#xff0c;可以避免由于某个服务的…

Python进行GRPC和Dubbo协议的高级测试

在微服务架构日益流行的今天&#xff0c;分布式系统的复杂性不断增加。GRPC 和 Dubbo 协议作为当今互联网行业中常见的高性能通信协议&#xff0c;已经成为服务之间交互的核心。然而&#xff0c;随着服务调用层次的不断增加&#xff0c;如何有效地测试这两种协议&#xff0c;确…

【启明智显分享】5G CPE为什么适合应用在连锁店中?

连锁门店需要5G CPE来满足其日益增长的网络需求&#xff0c;提升整体运营效率和竞争力。那么为什么5G CPE适合连锁店应用呢&#xff0c;小编为此做了整理&#xff0c;主要是基于以下几个方面的原因&#xff1a; 一、高效稳定的网络连接 1、高速数据传输&#xff1a; 5G CPE能…

私域运营流程框架

蝴蝶模型的作用主要体现在以下几点&#xff1a; 1. 提供清晰的运营思路&#xff1a;使运营人员能够全面、系统地规划和执行私域运营策略&#xff0c;避免盲目和混乱。 2. 实现精准营销&#xff1a;通过分层分类&#xff0c;能够针对不同用户群体制定个性化的营销策略&#xff0…

Python中的面向对象编程,类,对象,封装,继承,多态

一、面向对象编程 1.面向过程和面向对象 面向过程和面向对象都是一种编程方式&#xff0c;只不过再设计上有区别。 面向过程 C语言 细分成每一个过程 优点&#xff1a;简单直观、性能高效、代码简洁。 缺点&#xff1a;不易维护、不易扩展、代码重用性低。 面向对象 p…

【MongoDB】MongoDB的集群,部署架构,OptLog,集群优化等详解

文章目录 一、引入复制集的原因二、复制集成员&#xff08;一&#xff09;基本成员&#xff08;二&#xff09;主节点&#xff08;Primary&#xff09;细化成员 三、复制集常见部署架构&#xff08;一&#xff09;基础三节点&#xff08;二&#xff09;跨数据中心 四、复制集保…

万字长文串烧LLM大模型技术原理

导读 导读对Llama 3大型语言模型技术的一次全面概述&#xff0c;涵盖了预训练、后训练及推理阶段的关键技术&#xff0c;包括数据处理、量化方法&#xff08;如INT8和FP8量化&#xff09;、以及如何通过微调提升模型效率和准确性等方面的内容。 0 开始之前 本文从Llama 3报告…

网络工程师--端口隔离技术

端口隔离基本原理&#xff1a; 同一VLAN隔离组内的用户不能进行二次通信 不同隔离组内的用户可正常通信 未划分VLAN隔离的用户也可与VLAN隔离组内的用户正常通信 VLAN隔离组分为两种模式&#xff1a; 二层隔离三层互通 二三层均隔离 命令&#xff1a; 进入要加入隔离组的…

基于SSM花卉商城设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

智慧选矿流程可视化平台

通过图扑可视化搭建的智慧选矿平台为选矿过程提供直观监控与优化方案。实现对生产效率、资源消耗和设备状态的动态分析&#xff0c;优化管理流程&#xff0c;提高矿业生产的智能化水平和决策精准度。

Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?

最近有很多朋友去目前主流的大型互联网公司面试&#xff08;阿里巴巴、京东、美团、滴滴&#xff09;&#xff0c;面试回来之后会发给我一些面试题。有些朋友轻松过关&#xff0c;拿到offer&#xff0c;但是有一些是来询问我答案的。 其实本来真的没打算写这篇文章&#xff0c…

UE5 设置Sequence播完后返回起始位置

UE5 的sequence中&#xff0c;播放完毕&#xff0c;动画会停到最后一帧&#xff0c; 需要播放完毕后&#xff0c;设置sequence为起始位置 蓝图中控制方法&#xff1a; 链接&#xff1a;UE5 设置Sequence播完后返回起始位置 posted by anonymous | blueprintUE | PasteBin F…