leetCode 100. 相同的树 和 leetCode 101. 对称二叉树 和 110. 平衡二叉树 和 199. 二叉树的右视图

1.leetCode 100. 相同的树

C++代码:

class Solution {
public:bool isSameTree(TreeNode* p, TreeNode* q) {if(p == nullptr || q == nullptr) return p==q;return p->val == q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right);}
};

Python代码: 

class Solution:def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:if p is None or q is None:return p is qreturn p.val == q.val and self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)

2.leetCode 101. 对称二叉树
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

C++代码: 

class Solution {
public:bool isSameTree(TreeNode* p,TreeNode* q) {if(p == nullptr || q == nullptr) return p==q;return p->val == q->val && isSameTree(p->left,q->right) && isSameTree(p->right,q->left);}bool isSymmetric(TreeNode* root) {if(root==nullptr) return true;TreeNode* p = root->left;TreeNode* q = root->right;return isSameTree(p,q);}
};

 Python代码: 

class Solution:def isSameTree(self,p:Optional[TreeNode],q:Optional[TreeNode]) -> bool:if p is None or q is None:return p is qreturn p.val == q.val and self.isSameTree(p.left,q.right) and self.isSameTree(p.right,q.left)def isSymmetric(self, root: Optional[TreeNode]) -> bool:return self.isSameTree(root.left,root.right)

3.leetCode 110.平衡二叉树
https://leetcode.cn/problems/balanced-binary-tree/description/

C++代码:

class Solution {
public:int getHeight(TreeNode* root) {if(root==nullptr) return 0;int LH = getHeight(root->left);if(LH == -1) return -1;int RH = getHeight(root->right);if(RH == -1 or abs(RH-LH) > 1) return -1;return max(LH,RH)+1;}bool isBalanced(TreeNode* root) {return getHeight(root)!=-1;}
};

Python代码:

class Solution:def isBalanced(self, root: Optional[TreeNode]) -> bool:def get_height(node):if node is None: return 0LH = get_height(node.left)if LH == -1:return -1RH = get_height(node.right)if RH == -1 or abs(RH-LH) > 1:return -1return max(LH,RH)+1return get_height(root)!=-1

4.leetCode 199. 二叉树的右视图
https://leetcode.cn/problems/binary-tree-right-side-view/description/

C++代码: 

class Solution {
public:vector<int> ans;void dfs(TreeNode* node,int depth) {if(node==nullptr) return;if(depth == ans.size()) ans.push_back(node->val);dfs(node->right,depth+1);dfs(node->left,depth+1);}vector<int> rightSideView(TreeNode* root) {dfs(root,0);return ans;}
};

Python代码: 

class Solution:def rightSideView(self, root: Optional[TreeNode]) -> List[int]:ans = []def f(node,depth):if node is None:return if depth == len(ans):ans.append(node.val)f(node.right,depth+1)f(node.left,depth+1)f(root,0)return ans

参考和推荐文章、视频:

如何灵活运用递归?【基础算法精讲 10】_哔哩哔哩_bilibili

100. 相同的树 https://leetcode.cn/problems/same-tree/solutions/2015056/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-empk/

101. 对称二叉树 https://leetcode.cn/problems/symmetric-tree/solutions/2015063/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-6dq5/

110. 平衡二叉树 https://leetcode.cn/problems/balanced-binary-tree/solutions/2015068/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-c3wj/

199. 二叉树的右视图 https://leetcode.cn/problems/binary-tree-right-side-view/solutions/2015061/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-r1nc/ 

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

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

相关文章

详解Java中的异常体系机构(throw,throws,try-catch,finally,自定义异常)

目录 一.异常的概念 二.异常的体系结构 三.异常的处理 异常处理思路 LBYL&#xff1a;Look Before You Leap EAFP: Its Easier to Ask Forgiveness than Permission 异常抛出throw 异常的捕获 提醒声明throws try-catch捕获处理 finally的作用 四.自定义异常类 一.异…

openEuler20.03学习01-创建虚拟机

赶个时髦&#xff0c;开始学习openEuler 20.03 (LTS-SP3) 操作系统iso下载地址&#xff1a;https://repo.openeuler.openatom.cn/openEuler-20.03-LTS-SP3/ISO/x86_64/openEuler-20.03-LTS-SP3-x86_64-dvd.iso 公司有现成的vmware环境&#xff0c;创建虚拟机i测试&#xff0c…

Java视频直播技术架构详解

引言 随着互联网的不断发展&#xff0c;视频直播技术成为在线娱乐和沟通的重要组成部分。在众多的视频直播平台中&#xff0c;Java作为一种强大而灵活的编程语言&#xff0c;被广泛应用于构建稳定、高效的视频直播系统。本文将深入探讨Java视频直播技术的架构&#xff0c;包括…

EM@常见平面曲线的方程的不同表示方式

文章目录 abstract常见曲线的不同形式小结:一览表分析圆锥曲线的极坐标方程非标准位置的圆锥曲线参数方程应用比较 refs abstract 常见平面曲线的方程的不同表示方式 常见曲线的不同形式 下面以平面曲线为对象讨论参数方程通常是对普通方程的补充和增强,曲线的普通方程(直角…

【pandas】数据透视表【pivot_table】

pivot_table pandas的pivot_table函数是一个非常有用的工具&#xff0c;用于创建一个数据透视表&#xff0c;这是一种用于数据总结和分析的表格形式。 以下是pivot_table的基本语法&#xff1a; pandas.pivot_table(data, valuesNone, indexNone, columnsNone, aggfuncmean,…

[JVM] 字节二面~简述垃圾回收以及类加载过程,别说八股文,我想看到你自己的理解

GC 的三种收集方法&#xff1a;标记清除、标记整理、复制算法的原理与特点&#xff0c;分别用在什么地方&#xff0c;如果让你优化收集方法&#xff0c;有什么思路&#xff1f; ● 标记清除&#xff1a; 先标记&#xff0c;标记完毕之后再清除&#xff0c;效率不高&#xff0c…

基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境爬虫模型训练实际应用 模块实现1. 数据准备1&#xff09;爬虫下载原始图片2&#xff09;手动筛选图片 2. 数据处理1&#xff09;切割得到人物脸部2&#xff09;重新命名处理后的图片3&#xff09;添加到数据集 3. 模型训练及…

系列五、Spring整合MyBatis不忽略mapper接口同目录的xxxMapper.xml

一、概述 默认情况下maven要求我们将xml配置、properties配置等都放在resources目录下&#xff0c;如果我们强行将其放在java目录&#xff0c;即将xxxMapper.xml和xxxMapper接口放在同一个目录下&#xff0c;那么默认情况下maven打包时会将这个xxxMapper.xml文件忽略掉&#xf…

C++中const有什么作用

const用于定义常量&#xff1a;const定义的常量编译器可以对其进行数据静态类型安全检查。const修饰函数形式参数&#xff1a;当输入参数为用户自定义的类型和抽象数据类型时&#xff0c;应该将值传递改为const &传递&#xff0c;可以提高效率。 void fun(A a); void fun(…

十大排序之归并排序(详解)

文章目录 &#x1f412;个人主页&#x1f3c5;算法思维框架&#x1f4d6;前言&#xff1a; &#x1f380;归并排序 时间复杂度O(n*logn)&#x1f387;1. 算法步骤思想&#x1f387;2、动画演示&#x1f387;3.代码实现 &#x1f412;个人主页 &#x1f3c5;算法思维框架 &#…

GraphQL—构建多服务架构的数据层

简介 作为 Facebook 在 2015 年推出的查询语言&#xff0c;GraphQL 能够对 API 中的数据提供一套易于理解的完整描述&#xff0c;使得客户端能够更加准确的获得它需要的数据 现在的web系统大多是基于restful的&#xff0c;我们知道&#xff0c;REST强调以资源来划分系统&#x…

老HIS面临的问题总结

在从业的10余年时间&#xff0c;从事pb开发和教学多年&#xff0c;应朋友的要求&#xff0c;写一篇关于老his的问题&#xff0c;今天终于得空书写。老his自1995年立项至今已走过20余年&#xff0c;目前仍有上千家医院在使用&#xff0c;可以说它在医疗信息化水平的提升和行业人…

Python基础入门例程64-NP64 输出前三同学的成绩(元组)

最近的博文: Python基础入门例程63-NP63 修改报名名单(元组)-CSDN博客 Python基础入门例程62-NP62 运动会双人项目(元组)-CSDN博客 Python基础入门例程61-NP61 牛牛的矩阵相加(循环语句)-CSDN博客 目录 最近的博文: 描述

lvm 扩容根分区失败记录

lvm 扩容根分区失败记录 1、问题描述2、错误描述3、解决方法重启系统进入grub界面&#xff0c;选择kernel 2.x 启动系统。然后同样的resize2fs命令扩容成功。 1、问题描述 根分区不足。 系统有2个内核版本&#xff0c;一个是kernel 2.x&#xff0c;另一个是kernel 4.x。 这次l…

C语言剔除相关数(ZZULIOJ1204:剔除相关数)

题目描述 一个数与另一个数如果含有相同数字和个数的字符&#xff0c;则称两数相关。现有一堆乱七八糟的整数&#xff0c;里面可能充满了彼此相关的数&#xff0c;请你用一下手段&#xff0c;自动地将其剔除。 输入&#xff1a;多实例测试。每组数据包含一个n(n<1000)&#…

知行之桥EDI系统HTTP签名验证

本文简要概述如何在知行之桥EDI系统中使用 HTTP 签名身份验证&#xff0c;并将使用 CyberSource 作为该集成的示例。 API 概述 首字母缩略词 API 代表“应用程序编程接口”。这听起来可能很复杂&#xff0c;但真正归结为 API 是一种允许两个不同实体相互通信的软件。自开发以…

CSS 属性列表

CSS属性列表 序号 属性类别 属性 描述 1 动画属性 keyframes 定义一个动画,keyframes定义的动画名称用来被animation-name所使用。 2 animation 复合属性。检索或设置对象所应用的动画特效。 3 animation-name 检索或设置对象所应用的动画名称 ,必须与规则keyfra…

2023.11.25-电商项目建设业务学习1-指标,业务流程,核销

目录 1.指标分类(原子指标,派生指标,衍生指标) 2.一些业务名词 3.四大业务流程-销售需求 3.1-线上线下销售 3.2线上线下退款 4.四大业务流程-会员业务 5.四大业务流程-供应链业务 6.四大业务流程-商城业务 7.核销主题需求分析 1.指标分类(原子指标,派生指标,衍生指标) 原…

JVM类加载的过程和JVM垃圾回收机制

文章目录 一、JVM类加载的过程1.1类加载的基本流程1.1.1加载1.1.2验证1.1.3准备1.1.4解析1.1.5初始化 1.2双亲委派模型 二、JVM垃圾回收机制2.1找到垃圾2.1.1引用计数(比如Python&#xff0c;PHP中用到)2.1.2可达性分析(比如Java中用到) 2.2释放垃圾2.2.1标记清除2.2.2复制算法…

Nginx配置文件中的关键字是什么?详细解释来了

点击上方蓝字关注我 Nginx 是一款高性能的 Web 服务器软件&#xff0c;同时也是一款反向代理服务器软件。Nginx 的配置文件通常是 /etc/nginx/nginx.conf&#xff0c;以下是一个典型的配置文件&#xff0c;并对其中的关键字进行详细解释。 1. 配置文件 perlCopy codeuser ngin…