20250701

  • 思路与错误记录
    • 1.二叉树的数据结构与初始化
      • 1.1数据结构
      • 1.2 初始化
    • 2.解题
  • 完整代码
  • 今天做了什么

在这里插入图片描述

题目

在这里插入图片描述

思路与错误记录

1.二叉树的数据结构与初始化

1.1数据结构

在这里插入图片描述

1.2 初始化

根据列表,顺序存储构建二叉树


def build_tree(nodes, index=0):# idx是root开始的索引# 1. 如果>len()说明是原先就没有# 2. 节点创建结束if index >= len(nodes) or nodes[index] is None:return None# l_idx =  2*root_idx + 1# r_idx =  2*root_idx + 2root = TreeNode(nodes[index])root.left = build_tree(nodes, 2 * index + 1)root.right = build_tree(nodes, 2 * index + 2)return root

2.解题

首先确定LRD的遍历顺序
其次确定回溯的可能,找到指定元素之后,回溯返回来【确定是递归问题】,情况有:

  1. 在root返回
  2. 在一边返回
  • 左边
    (1)有一个节点是祖先
    (2)上面是祖先
  • 右边
    同左
  1. 在两边返回
    这情况说明是两个查找元素分布在root的两侧,因此祖先return root

在代码实现的时候需要注意顺序

在这里插入图片描述

递归的过程实例【情况2】:
不是指定元素的那条回溯是null,找到指定元素的向上返回,其上一层返回的就是他们的祖先节点
在这里插入图片描述
最后LRD遍历完所有,左边返回值【祖先节点】,右边是null。所以只要return回来2并作为结果就行了

在这里插入图片描述

完整代码

## 并查集做。但是感觉是二叉树+递归# 定义二叉树节点类
class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = Noneclass Solution:def lowestCommonAncestor(self, root, p, q):# 0. 如果root为空,或者root就是p或q,直接返回rootif not root or root == p or root == q:return root# 递归查找左子树和右子树left = self.lowestCommonAncestor(root.left, p, q)right = self.lowestCommonAncestor(root.right, p, q)# 1.左右都返回,root是祖先if left and right:return root# 2.一边返回【还可以添加终止查找吧?如果都在左可以直接不要找右边了】if not left:return rightif not right:return left# return left if left else right# 根据列表,顺序存储构建二叉树
def build_tree(nodes, index=0):# idx是root开始的索引# 1. 如果>len()说明是原先就没有# 2. 节点创建结束if index >= len(nodes) or nodes[index] is None:return None# l_idx =  2*root_idx + 1# r_idx =  2*root_idx + 2root = TreeNode(nodes[index])root.left = build_tree(nodes, 2 * index + 1)root.right = build_tree(nodes, 2 * index + 2)return root# 测试用例
if __name__ == "__main__":# 示例1nodes1 = [3,5,1,6,2,0,8,None,None,7,4]root1 = build_tree(nodes1)p1 = root1.left  # 5q1 = root1.right  # 1solution = Solution()lca1 = solution.lowestCommonAncestor(root1, p1, q1)

今天做了什么

  • 530 起床
  • 630 跑步【6k】
  • 830工位,1题&八股
  • 1130吃饭&打电话,1230看小说 【没打电话,自己玉玉去了】
  • 1400 代码 【自闭】
  • 下楼把衣服带出来洗
  • 1930 写东西/看论文 【打了3h羽毛球,一晚上都输!】
  • 2330 前睡觉 【熬夜恶魔了】

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

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

相关文章

Web应用开发 --- Tips

Web应用开发 --- Tips General后端需要做参数校验代码风格和Api设计风格的一致性大于正确性数据入库时间应由后端记录在对Api修改的时候,要注意兼容情况,避免breaking change 索引对于查询字段,注意加索引对于唯一的字段,考虑加唯…

CSS 安装使用教程

一、CSS 简介 CSS(Cascading Style Sheets,层叠样式表)是用于为 HTML 页面添加样式的语言。通过 CSS 可以控制网页元素的颜色、布局、字体、动画等,是前端开发的三大核心技术之一(HTML、CSS、JavaScript)。…

机器学习中为什么要用混合精度训练

目录 FP16与显存占用关系机器学习中一般使用混合精度训练:FP16计算 FP32存储关键变量。 FP16与显存占用关系 显存(Video RAM,简称 VRAM)是显卡(GPU)专用的内存。 FP32(单精度浮点)&…

[附源码+数据库+毕业论文+答辩PPT]基于Spring+MyBatis+MySQL+Maven+vue实现的中小型企业财务管理系统,推荐!

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本中小型企业财务管理就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信…

华为云Flexus+DeepSeek征文 | 对接华为云ModelArts Studio大模型:AI赋能投资理财分析与决策

引言:AI金融,开启智能投资新时代​​ 随着人工智能技术的飞速发展,金融投资行业正迎来前所未有的变革。​​华为云ModelArts Studio​​结合​​Flexus高性能计算​​与​​DeepSeek大模型​​,为投资者提供更精准、更高效的投资…

从模型部署到AI平台:云原生环境下的大模型平台化演进路径

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:部署只是起点,平台才是终局 在过去一年,大语言模型的飞速发展推动了AI生产力浪潮。越来越多…

UI前端大数据可视化创新:利用AR/VR技术提升用户沉浸感

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在大数据与沉浸式技术高速发展的今天,传统二维数据可视化已难以满足复杂数据场景的…

MacOS 安装brew 国内源【超简洁步骤】

​/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"请输入序号:1

GENESIS64:全球知名的工业设备监控与可视化平台

一、概述 GENESIS64是一款由ICONICS开发的先进工业自动化软件平台,专为实现实时数据可视化、智能化监控及管理而设计。该平台采用模块化架构,具有高效的数据处理能力和灵活的扩展性,适用于各类工业环境,帮助企业实现自动化运营&a…

RNN(Recurrent Neural Network,循环神经网络)家族详解(RNN,LSTM,GRU)

文章目录 一、RNN基础:序列建模的核心思想1.1 RNN的本质与核心机制1.2 应用场景与结构分类 二、传统RNN:序列模型的起点2.1 内部结构与数学表达2.2 计算示例2.3 RNN在Pytorch中的API2.4 代码示例2.5 优缺点与梯度问题 三、LSTM:门控机制破解长…

多云密钥统一管理实战:CKMS对接阿里云/华为云密钥服务

某保险公司因阿里云KMS密钥与华为云密钥割裂管理,导致勒索事件中解密失败!据统计,73%企业因多云密钥分散管理引发数据恢复延迟(IDC 2024)。本文将详解安当CKMS统一纳管方案,实现跨云密钥全生命周期管控&…

光伏接入承载力计算仿真:基于图计算技术的自动建模技术研究

光伏接入承载力计算仿真:基于图计算技术的自动建模技术研究 一、 引言:挑战与机遇 光伏发电的大规模接入对中低压配电网的安全稳定运行带来了巨大挑战。精确评估电网对光伏的承载力(Hosting Capacity, HC)是保障消纳与安全的关键。传统承载力评估严重依赖电网仿真,而仿真…

如何在Excel中每隔几行取一行

如何在Excel中每隔几行取一行 摘要: Excel中快速实现每隔n行取一行的技巧:使用OFFSET函数配合ROW函数即可实现。公式为OFFSET(起始单元格,(ROW(A1)-1)*n,),其中n为间隔行数。例如从A2开始每2行取一行,公式为OFFSET(A2,(ROW(A1)-1)…

【MariaDB】MariaDB Server 11.3.0 Alpha下载、安装、配置

MariaDB是一个开源关系型数据库管理系统(RDBMS),由MySQL的原始开发者Michael Widenius主导开发。作为MySQL的分支,MariaDB旨在保持与MySQL的高度兼容性,同时提供性能优化、新功能和更好的开源承诺。 目录 MariaDB下载 …

如何保证缓存和数据库的双写一致性

程序员面试资料大全|各种技术书籍等资料-1000G IDEA开发工具- FREE 一、双写一致性问题本质 在分布式系统中,缓存与数据库双写一致性指当数据被修改时,如何确保缓存(如Redis)和数据库(如MySQL&#xff09…

Qt 5.9 XML文件写入指南

Qt 5.9 XML文件写入指南 在Qt 5.9中,有多种方法可以编写XML文件。下面我将介绍三种主要方法,并提供完整的代码示例和最佳实践。 三种XML写入方法对比 方法优点缺点适用场景QXmlStreamWriter高效、内存占用低无树形结构大型XML文件QDomDocument树形结构…

一些ubuntu命令记录(持续补充)

一、查看代码运行占用的内存 1、使用 top 命令 top 命令是一个实时的系统监控工具,可以显示当前系统中所有进程的资源使用情况。运行以下命令: top 在 top 界面中,可以看到每个进程的内存使用情况(%MEM 列)。 如何…

今日学习:音视频领域入门文章参考(待完善)

音视频领域概览 入门文章参考 CSDN 雷神 博客园 2022-5-22

.npmrc和.yarnrc配置文件介绍:分别用于 Node.js 中的 npm(Node Package Manager)和 Yarn 包管理工具

.npmrc 和 .yarnrc 是两个配置文件,分别用于 Node.js 中的 npm(Node Package Manager)和 Yarn 包管理工具。它们存储了与包管理相关的配置选项,允许用户自定义和控制包的安装、版本、缓存等行为。下面是它们的详细说明&#xff1a…

数字人分身 + 矩阵系统聚合:源码搭建,支持OEM

在 AIGC 技术爆发的当下,数字人分身已从概念走向实用,而矩阵系统的聚合能力则让单个数字人分身突破场景限制,实现 “一人多岗” 的规模化应用。无论是企业客服、直播带货,还是教育培训、虚拟社交,数字人分身 矩阵系统…