1740. 找到⼆叉树中的距离

2023-10-14 01:28
文章标签 距离 找到 1740

本文主要是介绍1740. 找到⼆叉树中的距离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1740. 找到⼆叉树中的距离

这道题是最近公共祖先问题(LCA)的拓展。


class FindDistance:"""1740. 找到⼆叉树中的距离https://leetcode.cn/problems/find-distance-in-a-binary-tree/"""def solution(self, root, p, q):self.found = Falseself.res = 0self.lca(root, p, q)return self.res#  定义:当⼦树中不包含 p 或 q 时,返回 0;#  当⼦树中仅包含 p 或 q 中的⼀个时,返回 root 到 p 或 q 的距离;#  当⼦树中同时包含 p 和 q 时,返回⼀个⽆意义的值(答案会被存在外部变量 res 中)def lca(self, root, p, q):if self.found:# found 为 true 时答案已经被记录在全局 res 中# 递归函数的返回值已不需要了,此时返回什么值都⽆所谓return 123if not root:return 0left = self.lca(root.left, p, q)right = self.lca(root.right, p, q)# root 的左右⼦树都不包含 p 或 qif left == 0 and right == 0:if root.val == p or root.val == q:return 1return 0# 当前节点 root 就是 p, q 的最近公共祖先节点# 答案已经算出来了,更新全局变量if left != 0 and right != 0 and not self.found:self.res = left + right# 这个递归函数的返回值已经不重要了,让它终⽌递归self.found = Truereturn 456# 此时 left 和 right 有⼀个为 0,即只找到了⼀个节点# branch 就是到该节点的距离branch = right if left == 0 else left# 此时root就是p和q的最近祖先节点了,可直接更新resif root.val == p or root.val == q:self.res = branchreturn branch + 1

这篇关于1740. 找到⼆叉树中的距离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/207167

相关文章

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x

在二叉树中找到两个节点的最近公共祖先(基于Java)

如题  题解 public int lowestCommonAncestor(TreeNode root, int o1, int o2) {//记录遍历到的每个节点的父节点。Map<Integer, Integer> parent = new HashMap<>();Queue<TreeNode> queue = new LinkedList<>();parent.put(roo

模拟退火求n个点到某点距离和最短

/*找出一个点使得这个店到n个点的最长距离最短,即求最小覆盖圆的半径用一个点往各个方向扩展,如果结果更优,则继续以当前步长扩展,否则缩小步长*/#include<stdio.h>#include<math.h>#include<string.h>const double pi = acos(-1.0);struct point {double x,y;}p[1010];int

黑神话:悟空》增加草地绘制距离MOD使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验

《黑神话:悟空》增加草地绘制距离MOD为玩家提供了一种全新的视觉体验,通过扩展游戏中草地的绘制距离,增加了场景的深度和真实感。该MOD通过增加草地的绘制距离,使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验。 增加草地绘制距离MOD安装 1、在%userprofile%AppDataLocalb1SavedConfigWindows目录下找到Engine.ini文件。 2、使用记事本编辑

SimD:基于相似度距离的小目标检测标签分配

摘要 https://arxiv.org/pdf/2407.02394 由于物体尺寸有限且信息不足,小物体检测正成为计算机视觉领域最具挑战性的任务之一。标签分配策略是影响物体检测精度的关键因素。尽管已经存在一些针对小物体的有效标签分配策略,但大多数策略都集中在降低对边界框的敏感性以增加正样本数量上,并且需要设置一些固定的超参数。然而,更多的正样本并不一定会带来更好的检测结果,事实上,过多的正样本

Matlab)实现HSV非等间隔量化--相似判断:欧式距离--输出图片-

%************************************************************************** %                                 图像检索——提取颜色特征 %HSV空间颜色直方图(将RGB空间转化为HS

C/C++两点坐标求距离以及C++保留两位小数输出,秒了

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 3. 备注 1. 前言 依旧是带来一个练手的题目,目的就一个,方法千千万,通向终点的方式有很多种,没有谁与谁,我们都是为了成为更好的自己。 2. 正文 2.1 问题 题目描述: 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 输入格式:

mysql5.6根据经纬度查询距离二

在MySQL 5.6中,您可以使用Haversine公式来根据经纬度查询距离。以下是一个示例SQL查询,它计算出所有点与给定点(经度lon和纬度lat)的距离,并按距离排序: SELECT id, (2 * 6378.137 * ASIN(SQRT(POW( SIN( PI( ) * ( $lng- `long` ) / 360 ), 2 ) + COS( PI( ) * $lat / 180

像素间的关系(邻接、连通、区域、边界、距离定义)

文章目录 像素的相邻像素4邻域D邻域8邻域 邻接、连通、区域和边界邻接类型连通区域边界 距离测度欧氏距离城市街区距离(city-block distance)棋盘距离(chessboard distance) 参考 像素的相邻像素 4邻域 坐标 ( x , y ) (x,y) (x,y)处的像素 p p p有2个水平的相邻像素和2个垂直的相邻像素,它们的坐标是: ( x

【go语言计算两个经纬度距离】根据经纬度计算两点之间距离

一、需求分析: 输入两个经纬度,计算它们之间的距离 lat1,lng1 := 32.060255,118.796877lat2,lng2 := 39.904211,116.407395 二、计算公式 //C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)