LeetCode练习题:建立最小高度二叉树

LeetCode 最小高度树 对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。 格式 该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表(每一个边都是一对标签)。 你可以假设没有重复的边会出现在 edges 中。由于所有的边都是无向边,... 阅读详情

题干:

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

      0 
     / \ 
   -3   9 
   /   / 
 -10  5 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-height-tree-lcci

Python解法:

"""
Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
"""


class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
        n = len(nums)
        if not n:
            return
        mid = len(nums)//2	#计算中值
        root=TreeNode(nums[mid])	#找出中值,树化,并赋值给root
        root.left=self.sortedArrayToBST(nums[:mid])	#把列表中根值左边的数值拿出来做递归创建左子树
        root.right=self.sortedArrayToBST(nums[mid+1:])	#把列表中根值右边的数值拿出来做递归创建左子树
        return root

在做这道题时,在网上找了一个关于二叉树的详解(Python版),这里把链接发出来,便于翻找和巩固。

链接:二叉树的Python实现

《全连接到卷积神经网络:图像识别的演变历程》 这篇文章会从传统全连接层面临的困境说起,揭示卷积神经网络(CNN)成为图像识别核心动力的原因,探究其背后蕴含的设计思想与技术创新。但是回顾历史,CNN的出现提醒我们:技术的突破往往是由对自然规律的模仿和重新构建得来的。也许,当机器真的学会“像人一样看世界”的时候,它们的“眼睛”早就超过生物视觉的限制了。例如,用5×5的核处理224×224的输入时,只要25个参数(而不是全连接那种百万级的)。* 局部性:网络的底层只需留意局部的地方(像边缘、纹理这样的地方),不用管那些全局像素之间复杂的关系。 阅读详情

相关推荐

Vue3+codemirror6实现公式(规则)编辑器

vue3+codemirror6+ts实现公式编辑器,可以插入标签、公式,也有补全提示

小阮的笔记本 5046

程序员面试金典: 9.4树与图 4.3给定一个有序整数数组,元素各不相同且按升序排列,创建一颗高度最小的二叉查找树。

#include #include using namespace std; /* 问题:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一颗高度最小的二叉查找树。 分析:二叉查找树是左孩子<结点<右孩子。二叉查找树关键的部分应该是调整树的结点,使得平衡。高度最小 的二叉查找树,应该是平衡的二叉查找树。 中序遍历的结果是:左中右,那么遍历 问题转化为如何

qingyuanluofeng的专栏 762

Xilinx SDK调试与FPGA硬件验证全流程解析

本文详细解析了从Vivado导出硬件到Xilinx SDK进行调试与FPGA硬件验证的全流程。重点阐述了正确导出包含bitstream的硬件平台、创建合适的SDK工程、配置Debug会话以编程FPGA,并介绍了串口验证、自定义IP测试以及使用ILA进行软硬件联合调试的高级技巧,帮助开发者高效完成FPGA系统的软硬件协同开发与问题排查。

weixin_28327051的博客 311

最小高度树Java版本(力扣)

最小高度树 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 题意:让我们根据给的有序数组,创建一个高度最小的二叉树。 思路:递归求解,sortedArrayToBST方法中传入的数组,我们取数组的中间值为根节点,

『愚』的博客 3726

RT-Thread学习笔记(5):SPI驱动框架分析

1、两个设备模型 在spi驱框架中,一般会自己初始化一个总线设备(rt_spi_bus),当我们通过挂载后,会相应注册一个从设备(rt_spi_device)。 1、总线设备模型 struct rt_spi_bus { struct rt_device parent; rt_uint8_t mode; const struct rt_spi_ops *ops; struct rt_mutex lock; struct rt_spi_device *owner; };

BLBQ962464的博客 1万+

增量式PID的P和I怎么理解(一)

增量式PID的P、I理解之推翻片 据我所知的资料里关于PID三个参数的理解是这样的:(我这里只说P和I,先不说D) P的作用:比例P可以加快系统调节速度,P过小调节时间变长,响应性不够,P越大响应性越高超调也越严重,过大的P会使系统振荡。 I的作用:消除静差,提高控制精度,I越大越滞后,过大会使系统振荡。 ...

fangchenglia的博客 1万+

最小高度树

最小高度树 题目描述:   给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 原题链接 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 题解:(数组切割+递归) 思路分析:   那如何保证高度最小呢?当树中的任意结点的左右子树高度差都不超过 1 时,整棵树的深

qq_43899283的博客 250

【Pytorch教程】:卷积神经网络 CNN

Pytorch教程目录 Torch and Numpy 变量 (Variable) 激励函数 关系拟合(回归) 区分类型 (分类) 快速搭建法 批训练 加速神经网络训练 Optimizer优化器 卷积神经网络 CNN 目录Pytorch教程目录什么是卷积神经网络 CNN卷积 和 神经网络池化(pooling)流行的 CNN 结构CNN 卷积神经网络MNIST手写数据CNN模型训练可视化训练全部代码 什么是卷积神经网络 CNN 卷积 和 神经网络 卷积神经网络是如何运作的呢, 举一个识别图片的例子, 我们知

nanke_4869的博客 8087

LeetCode-七进制数、最小高度二叉搜索树

只是为了记录每天的练习(要好好加油啊呜呜呜现在的我还太拉了 思路很直接啊……就是转进制+数字转字符串。 class Solution { public: string convertToBase7(int num) { if(num == 0) //特殊情况 return "0"; const int system = 7;//使其普遍适用于n进制 bool flag;//记录num的正负性 flag

哼 7062

10.嵌入式控制器EC实战 GPIO开发流程

文章目录1.General Control Register (GCR),通用控制寄存器,地址0x1602.GPDRA—GPDRJ端口数据寄存器组(共10组)3.Port Control n Registers (GPCRn, n = A0-I7),端口控制寄存器4.GPIO端口编程指导编程步骤端口初始化使用InitGPIOReg数据结构初始化所有端口默认工作模式读取输入引脚的值(STATE_ACin()): IT8502中各个引脚的描述见下表所示: 在嵌入式控制器EC的IT8502主控芯片中,通过芯片的

qq_30135687的博客 2284

通信原理 | CRC循环冗余校验码(最简介明了的原理和matlab程序)

异或运算: 多项式: CRC校验中用到的除数,是由多项式的各项系数组成的,如下所示: 没有的项系数为0,比如:x5次方、x3次方下一步,在原数据串的末端加“0”0的数量由多项式决定具体来说,多项式的阶数是多少就加几个0 具体操作: 现在,我们有了除数,也有了处理过的数据串,如下所示: 就可以开始计算校验和 了将数据串第一个1与除数左对齐,按位进行异或操作: 将未处理的数据搬下来作为新的数据,重复操作: 将新的数据串第一个1与除数左对齐,再重复按位异或操作: 如此循环,直到所有数据都处理过

若北辰 2357

数据结构知识总结

目录二叉搜索树(BST)1. 概念2. 相应操作3. 代码实现 二叉搜索树(BST) 1. 概念 顾名思义是一棵二叉树,可能为空。 每个元素都有一个关键字,任意元素关键字不相同。 根节点的左子树,元素的关键字(如果有)都小于根节点的关键字 根节点的右子树,元素的关键字(如果有)都大于根节点的关键字 根节点的左、右子树也都是二叉搜索树 注:当关键字可重复时,定义3、4可以改为小于等于,大于等于。称为有重复值的二叉搜索树 2. 相应操作 插入 删除 查找 3. 代码实现 ..

撑一把纸伞,等一位佳人 1210

医疗数据采集:Python爬虫爬取医学文献与药品信息(2026合规与伦理版)

医疗数据采集不同于爬取新闻或房价,它直接关系到人的生命健康和法律底线。技术层面:优先使用官方 API (PubMed E-utilities, BioThings),避免解析复杂HTML。法律层面:严守“不碰隐私、不破付费、不传谣言”三条红线。伦理层面:保持对生命的敬畏,确保数据的准确性和用途的正当性。在2026年,一个优秀的医疗数据工程师,不是那个能爬取最多数据的人,而是那个能在合规框架下,利用公开数据解决真实医疗问题的人。请务必珍视您的职业生涯和法律责任,切勿以身试法。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 284

代码随想录算法训练营第十六天|Leetcode104 二叉树的最大深度 、Leetcode111 二叉树的最小深度、Leetcode222 完全二叉树的节点个数

输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]假如左结点存在,则深度加一,然后向左孩子递归,每结束一次左孩子的递归需要深度减一,才能对右孩子进行递归,最后返回最大值即可。函数分别获取左右子树的高度,而对于二叉树的最大高度则是取两者的最大值随后加上根结点的一层即可。对于最大深度的解决,使用前序和后序遍历都可以,因为返回的都是根节点到叶子节点的最大距离。

Demok123的博客 1963

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

力扣刷题:求树的最大高度,树的最小高度,与判断平衡二叉树

解题思路:这里我们考虑用递归方式解题。递归判断当前元素是否为空,如果为空,返回 0 。(讲到这里我们知道这个条件是递归的结束条件,防止递归无限执行下去)如果不为空我们返回左右子树中树高最高的值再加 1 。 代码如下 int maxDepth(struct TreeNode* root){ if(root==NULL) //若果当前节点为空,返回0 return 0; else { return fmax(maxDepth(root->left).

weixin_43211195的博客 1551

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【LeetCode】升级打怪之路 Day 18:二叉树题型 —— 树的深度、高度、路经

Day 18:二叉树题型 —— 树的深度、高度、路径

VLyb 1031

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

力扣第111题:二叉树的最小深度

给定一个二叉树,找出其最小深度。是从根节点到最近的叶子节点的路径上的节点个数。是指没有子节点的节点。

weixin_48941116的博客 1222

leetcode:最小高度树

题目来源:力扣 题目描述: 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 审题: 由于数组已经是有序数组,所以构建二叉搜索树并不难,基于二叉树的特性,我们将数组划分为两部分,递归构建其左右子树即可.对于题目中要求的高度最小,我们知道一棵平衡树是高度最小的二叉树.因此我们每次切分应当保证左右子树大小相差不超过1,基于此,根节点位置只要选择在中间位置...

zhangxiaojiakele的博客 482

#力扣 LeetCode111. 二叉树的最小深度 @FDDLC

题目描述: 111. 二叉树的最小深度 - 力扣(LeetCode) (leetcode-cn.com) Java代码一: class Solution { //树中节点数的范围在 [0, 105] 内 public int minDepth(TreeNode root) { if(root==null)return 0; if(root.left==null&&root.right==null)return 1; //叶结点 .

LiuXingchang的博客 408

【BFS&递归】求二叉树最小高度

1.题目:求二叉树最小高度 【LeetCode111】:判断一棵二叉树的最小高度: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. Note: A leaf is a node with no children. Example 1: In

weixin_45209148的博客 1141

AlphaMaster工程质量完全指南:单元测试、属性测试与Playwright端到端测试如何保障MT5因子挖掘项目

**AlphaMaster** 是一个面向 MT5 的**因子挖掘、回测与 Web 训练界面**一体化项目:用 AlphaGPT 生成因子公式,经 StackVM 求值后回测打分,并通过 FastAPI Web 控制台一键训练。正因为涉及"数据 → 特征 → 训练 → 回测 → 实盘信号"这条长链路,项目内置了一套**单元测试 + 属性测试 + Playwright 端到端测试**的三层质量保障体

gitblog_00635的博客 983

瑞_力扣LeetCode_104. 二叉树的最大深度

力扣LeetCode_104. 二叉树的最大深度

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 1229

二叉树的深度和高度问题

关卡名二叉树的经典面试问题我会了✔️内容1.最大深度问题2.判断平衡树3.最小深度4.N叉树的最大深度给定二叉树 [3,9,20,null,null,15,7],如下图然后LeetCode给我们造了一堆的题目,现在一起来研究一下104、110和111三个题,这三个题看起来挺像的,都是关于深度、高度的。

m0_53401014的博客 1234

力扣310.最小高度树(拓扑排序,无向图),力扣.加油站力扣.矩阵置零​​​力扣.二叉树中的最大路径和

力扣310.最小高度树(拓扑排序,无向图),力扣.加油站力扣.矩阵置零​​​力扣.二叉树中的最大路径和

weixin_72953218的博客 680

力扣题解-二叉树类| 二叉树求高度、深度、宽度、判断平衡性等系列问题(java实现)

1、求树的深度(最大深度) 树的深度是从根节点到最远叶子节点的最短路径上的节点数量 //(递归方式)获取以root为根节点的子树的深度:从叶子节点到达根节点的最长路径 public int getDept(TreeNode root, int dept){ if(root == null){ return dept; } int leftDept = getDept(root.left, dept+1); int rightDept = getDept(ro

KevinBrain的博客 700

LeetCode104 && LeetCode111:二叉树的高度

目录 一、题目 二、示例 三、思路 四、代码 一、题目 1、LeetCode104:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明:叶子节点是指没有子节点的节点。 2、LeetCode111:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 二、示例 1、LeetCode104: 给定二叉树 [3,9,20,null,null,15,7], ..

D77的博客 377
上一篇: 技术解析:openstack vlan模式下的隔离和数据流向(转)
flyingwindow
博客等级 码龄17年 4粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值