0x3f 第35天 电脑硬盘坏了 +二叉树直径,将有序数组转换为二叉搜索树

九点多电脑还好好的,突然蓝屏了,自己修了半天无果,打电话叫修电脑的,头天晚上电动车还坏了,后面轮胎瘪了,简直就是祸不单行,先去把轮胎修了,然后等着修电脑的来,检查完说电脑硬盘用久了坏了,c盘d盘用不了了,还好大部分研究生期间数据都在e盘,把e盘取出来,换了台主机,基本上一台全新的电脑,啥都得安装。论文的原始数据集还在,但是之前搜的文献啥的,存在c盘的都没了,整理一下大概哪些没了,哪些还在

|-------------|----|----------------------------------------------------|
| 原始数据集 | 还在 | |
| 脱敏后的数据集 | | 没了得重跑 |
| 论文跑的结果 | | 没了得重跑 |
| 论文代码 | 还在 | |
| 相关文献 | | 没了 |
| 苍穹外卖配的所有环境 | | idea,datagrip,mysql,redis,微信小程序开发端,javajdk,nginx前端 |
| 苍穹外卖代码 | 还在 | |
| 心态 | | 崩了 |
| 工位电脑的微信聊天记录 | | 没了 |
| | | |

早上十点一直弄到下午五点,把外卖的环境全部有配置好了,还好能继续跑,今天真的心累,

写写算法休息一下吧,唉

|--------------------------------------------------------------------------------------------------------------|--------------------|
| 长度最小的子数组 | x问题很大 |
| 乘积小于 K 的子数组 | x最核心的问题想到了,差点细节 |
| N皇后 | x整体思路没问题,小细节太久没做忘了 |
| 电话号码的字母组合 | x有点忘了 |
| 二叉树的锯齿形层序遍历 | x基本没大毛病 |
| 最长公共子序列 | x |
| 二叉搜索树的最近公共祖先 | x |
| | |
| | |

1.二叉树直径

1.核心思路,后序,假设手上拿着当前节点左最长链 ,右最长链,你如何计算最长直径?

ans = max(ans,l_max+r_max+2)

详解公式:以节点5为例,节点5 的左最长链l_max就是节点2 的最长链长度为2

右最长链r_max就是节点6的最长链长度为0

再加上2 ,2就是连接这仨节点的

2.注意ans是不断更新的,所以在使用ans前要nonlocal ans
3.求最长链就和最大深度一样的公式,return max(l_max,r_max)+1
4.注意起始条件

复制代码
class Solution:
    def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        ans = 0
        def dfs(node):
            if node is None:
                return -1
            lmax = dfs(node.left)
            rmax = dfs(node.right)
            nonlocal ans
            ans = max(ans,lmax+rmax+2)
            return max(lmax,rmax)+1
        dfs(root)
        return ans

2、将有序数组转换为二叉搜索树

很明显了,变成一个二叉搜索树,那就递归,后序,然后每次处理中间的这个节点呗

为什么每次处理中间的,,这样就实现了二叉搜索树,nums\[\]已经排序好了,那每次处理nums中间的数字,那不就自动成为了二叉搜索树

边界条件:nums数组被//2 ÷干净了

递归就是left的就是nums :middle

right就是numsmiddle+1:

复制代码
class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
        if nums ==[]:
            return None
        m = (len(nums))//2
        left = self.sortedArrayToBST(nums[:m])
        right = self.sortedArrayToBST(nums[m+1:])
        return TreeNode(nums[m],left,right)
相关推荐
2601_954706496 分钟前
云手机技术详解+Python实战调用|2026高稳云手机平台推荐
开发语言·python·智能手机
chushiyunen8 分钟前
java中的路径处理、左右斜杠
java·开发语言·python
yyxx41212323 分钟前
上海企业如何选择专业的钉钉服务商
java·大数据·人工智能·钉钉
绿算技术29 分钟前
Mooncake 与绿算ForinnBase GroundPool如何联手打破推理僵局?
科技·算法·架构
-森屿安年-33 分钟前
63. 不同路径 II
c++·算法·动态规划
jay神33 分钟前
基于 FastAPI + Vue 的宠物领养管理系统
前端·vue.js·python·毕业设计·fastapi·宠物
一杯奶茶¥34 分钟前
水果销售网站 CRM客户信息管理系统 超市管理系 酒店管理系统 健身房管理系统 在线音乐网站 校园招聘系统
java·vue.js·spring boot·mysql·spring·java项目
重生之后端学习38 分钟前
Java入门
java·开发语言·职场和发展
碧海蓝天202243 分钟前
C++法则24:在标准 C++ 中,没有任何可移植的方式判断指针 T* pt 指向的内存位置是否已经 构造了对象,程序员必须手动跟踪哪些元素已构造。
java·开发语言·c++
老余捞鱼1 小时前
线性回归实战:5步验证你的量化因子是否真有效
算法·金融·回归·线性回归·ai量化