[LeetCode]108. Convert Sorted Array to Binary Search Tree(升序数组转化为平衡二叉树)

将有序数组转换为平衡的二叉搜索树 数据结构-树-将有序数组转换为二叉搜索树 问题描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 给定有序数组: [-10,-3,0,5,... 阅读详情

108. Convert Sorted Array to Binary Search Tree

原题链接
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

题目大意:
给定一个升序数组,转化为一个平衡二叉树

思路:

  • 首先要了解二叉排序树BST的定义。给定一个很详细的介绍
  • 其次要明白什么是平衡二叉树
  • 平衡二叉树:在BST的基础上,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
  • 二叉排序树和平衡二叉树区分,链接1,链接2
  • 接下来考虑算法,很简单,就是先找到中间元素,创建根节点,左右子树分别用中间元素左边(即小于中间节点的元素)和中间元素右边(即大于中间节点的元素)递归创建。这样,节点的左子树永远比节点小,右子树永远比节点大,且由于平均递归创建每一层的子树,所以两个子树的高度差不会超过1。

代码如下:

#include <iostream>
#include <vector>
#include <queue>
using namespace std;

// Definition for a binary tree node.
  struct TreeNode {
      int val;
      TreeNode *left;
      TreeNode *right;
      TreeNode(int x) : val(x), left(NULL), right(NULL) {}
  };

class Solution {
public:
    TreeNode *sortedArrayToBST(vector<int>& nums) {
        return BuildTree(nums, 0, nums.size()-1);
    }
    TreeNode *BuildTree(vector<int> &nums, int Start, int End){
        if(Start > End) return nullptr;
        if(Start == End) return new TreeNode(nums[Start]);
        int Min = (Start+End)/2;
        TreeNode *node = new TreeNode(nums[Min]);// 根节点
        node->left = BuildTree(nums, Start, Min-1);// 左子树
        node->right = BuildTree(nums, Min+1, End);// 右子树
        return node;
    }
    // 层次遍历
    vector<vector<int> > LevelOrder(TreeNode *root) {
        vector<int> level;
        vector<vector<int> > levels;
        if(root == NULL){
            return levels;
        }
        queue<TreeNode*> cur,next;
        //入队列
        cur.push(root);//入队 将root元素接到队列的末端;
        // 层次遍历
        while(!cur.empty()){
            //当前层遍历
            while(!cur.empty()){
                TreeNode *p = cur.front();//cur.front() 访问队首元素
                cur.pop();//出队 弹出队列的第一个元素,并不会返回元素的值;
                level.push_back(p->val);
                // next保存下一层节点
                //左子树
                if(p->left){
                    next.push(p->left);
                }
                //右子树
                if(p->right){
                    next.push(p->right);
                }
            }//end while
            levels.push_back(level);
            level.clear();
            swap(next,cur);
        }//end while
        return levels;
    }
};
int main()
{
    Solution S;
    vector<int> num = {0,1,2,3,4,5,6,7,8,9};
    TreeNode* root = S.sortedArrayToBST(num);
    vector<vector<int> > levels = S.LevelOrder(root);
    for(int i = 0;i < levels.size();i++){
        for(int j = 0;j < levels[i].size();j++){
            cout<<levels[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

注意:

Fakra连接器封装的PCB处理方式分析与总结 以往的项目中,关于Fakra连接器封装焊盘的PCB处理方式一直未有明确的规则定义,不同的处理方式,产生的效果各不相同,严重影响到设计的一致性,为此,本文针对这一设计上的缺陷进行了量化分析: 以十层板设计为例,分别从插入损耗(IL)、回波损耗(RL)、特性阻抗(Z0)三个维度进行了分析对比,最终,总结出适合的PCB设计规则,并且,该规则也适用于十层以外的叠构设计。 阅读详情

相关推荐

PAT|中国大学MOOC-浙江大学翁恺-C语言程序设计习题集(更新中)

##2-0. 整数四则运算 时间限制:400 ms 内存限制:65536 kB 代码长度限制:8000 B 判题程序:Standard 作者:乔林(清华大学) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 ...

小鱼波波波 6万+

数据结构-将升序数组转化为平衡二叉搜索树-java

1.题目 给定一个升序排序的数组,将其转化为平衡二叉搜索树(BST). 平衡二叉搜索树指树上每个节点 node 都满足左子树中所有节点的的值都小于 node 的值,右子树中所有节点的值都大于 node 的值,并且左右子树的节点数量之差不大于1. 2.代码 public class Test { public static class TreeNode { public TreeNode(int val) { this.val = val;

qq_25064691的博客 601

ArcGIS坐标系实战:从北京54到CGCS2000的完整转换指南(附常见报错解决方案)

本文详细解析了ArcGIS中从北京54到CGCS2000坐标系的完整转换流程,涵盖核心原理、分步操作指南及常见报错解决方案。重点介绍了高斯投影分带规则、地理变换方法选择以及性能优化技巧,帮助GIS工程师确保空间数据的精确转换与高效处理。

weixin_29284657的博客 762

[leetcode]108. Convert Sorted Array to Binary Search Tree@Java解题报告

https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/ Given an array where elements are sorted in ascending order, convert it to a height balanced BST. pa

zjkC050818的博客 615

深度学习模型轻量化方法之【量化】

量化虽然有着硬件友好和功效提升的特点,但它也引入了模型性能的折衷。因此,设计有效的量化策略需要在模型大小、性能以及运算速度之间做出平衡。随着深度学习算法和硬件加速技术的快速发展,量化方法在使深度网络轻量化和提高部署效率方面持续发挥着重要作用。

m0_73916791的博客 2850

AI驱动Spine骨骼动画生成:从图像拆分到动画自动化的全流程解析

计算机视觉与生成式AI技术正深度赋能传统数字内容生产流程。在2D动画制作领域,骨骼动画技术通过模拟真实生物关节运动,实现了角色动画的高效制作与灵活控制。其核心原理在于将角色拆分为独立部件,通过骨骼层级关系驱动部件变换,结合关键帧插值算法生成流畅动作。这项技术的工程价值在于大幅降低动画制作门槛,提升内容生产效率,尤其适用于游戏开发、影视预演、广告设计等需要快速原型迭代的场景。本文聚焦于如何利用SIFT特征匹配、RANSAC几何验证等CV算法实现部件自动对位,并结合动画12原则的程序化实现,构建从单张角色立绘到

weixin_28696185的博客 1536

将升序数组转化成平衡二叉搜索树&&二叉树中和为某一值的路径&&二叉树的最大深度

01-二叉树的最大深度 描述 求给定二叉树的最大深度, 深度是指树的根节点到任一叶子节点路径上节点的数量。 最大深度是所有叶子节点的深度的最大值。 示例2 输入:{1,2,3,4,#,#,5} 返回值:3 递归思路: 1.如果树为空,就返回0 2.递归左子树得到左子树的深度 3.递归右子树的到右子树的深度 4.取左子树和右子树的最大值再将根节点算上,所以最大值+1 代码实现: function maxDepth( root ) { // write code here if(root =

weixin_43288533的博客 463

工艺边与定位孔设计经验规则总结

工艺边是在SMT焊接时,为了PCB和导轨接触预留的PCB边。工艺边和PCB的接触部分一般需要开槽,或者使用邮票孔,以方便后期去除工艺边。

fydar的博客 1987

将升序数组转化为平衡二叉搜索树

题目描述 给出一个升序排序的数组,将其转化为平衡二叉搜索树。 平衡二叉搜索树 树中任何结点的左子树和右子树高度最多相差1。 实现思路 将数组从中点分成左右两份,用左侧的数字构建左子树,右侧的数字构建右子树,递归执行,直到数组长度为0。则可以保证树中任意节点的左子树高度和右子树高度最多相差1。 代码实现 import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * T

weixin_44662301的博客 711

jdbc从入门到精通(全)

前言 Java语言连接数据库(Java DataBase Connectivity) 面向接口/抽象编程(降低程序的耦合度,提高程序的扩展力)类似多态机制

码农研究僧的博客 1760

OpenClaw 预置技能完全指南

OpenClaw 技能(Skills)是扩展 AI 助手能力的插件系统。🔐 管理密码和敏感信息(1Password)📝 操作 Apple Notes 和 Reminders🔍 实时搜索互联网(Brave Search)🎨 生成和编辑图片(Nano Banana Pro)📧 收发邮件(Himalaya)🏠 控制智能家居(OpenHue、Eight Sleep)💬 发送消息(iMessage、WhatsApp、Slack)🎵 控制音乐播放(Spotify、Sonos)

Maynor的博客 1704

LeetCode 108. Convert Sorted Array to Binary Search Tree 题解

本题是二叉搜索树的基础问题,主要考察递归构建树的技巧。选择中间元素作为根节点,保证平衡性递归构建左右子树注意整数溢出问题通过本题可以深入理解二叉搜索树的性质和递归构建树的方法。

cannonjinx的博客 4063

【施磊】C++课程笔记目录

【C++编程】施磊老师C++笔记目录

GeniusAng的博客 4127

leetcode108. Convert Sorted Array to Binary Search Tree

题目描述 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of...

中华小当家的博客 359

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode 108. Convert Sorted Array to Binary Search Tree

LeetCode 108. Convert Sorted Array to Binary Search Tree 108.Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending order, ...

豆子 134

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode题解:Convert Sorted Array to Binary Search Tree

Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 思路: 给定一个区间[left, right],取其中值mid=(left+right)/2对应的元素作为二

Magi Su的技术回收站 4534

OV9734 DATASHEET,完整规格书

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

【LeetCode】 108. Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树(Easy)(JAVA)

【LeetCode】 108. Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树(Easy)(JAVA) 题目地址: https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题目描述: Given an array where elements...

qq_16927853的博客 242

[LeetCode] 108. Convert Sorted Array to Binary Search Tree

原题链接: 1. 题目介绍 2. 解题思路

Ber03的博客 207

LeetCode108——Convert Sorted Array to Binary Search Tree

题目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-balanced binary tree is defined as a binary tree in which th...

dingze7757的博客 244

leetcode python3 简单题108. Convert Sorted Array to Binary Search Tree

1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百零八题 (1)题目 英文: Given an array where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-...

从此做一个俗人 340

leetcode -- 108. Convert Sorted Array to Binary Search Tree

题目描述 题目难度:Easy Given an array where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-balanced binary tree is defined as a binary tree in which th...

tkzc_csk的博客 199

leetcode 108. Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 平衡二叉树就是平衡二叉查找树,它的定义就是:是一棵空树 或 它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 递归方式的解法: package le

淡然坊 266

【LeetCode】108. Convert Sorted Array to Binary Search Tree 解题报告(Python)

题目分析: 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 解题思路: 这一题利用二分查找与递归的思想解决,因为是把一个有序的数组转换成二叉...

L141210113的专栏 457

leetCode 108. Convert Sorted Array to Binary Search Tree JAVA

108. Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending order, convert it to a height balanced BST.    这到题把有序数组转成平衡二叉搜索树,所以选取数组的中点num[mid]作为根,对左右两边分

记忆力不好的博客 1390

[LeetCode] 108. Convert Sorted Array to Binary Search Tree

题目内容 https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/ 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的...

Reyiiiin的深夜一点半 100
上一篇: [LeetCode]572. Subtree of Another Tree(判断树t是否是树S的子树)
下一篇: [LeetCode]415. Add Strings(计算两个字符串表示的数字的和)
whl_program
博客等级 码龄11年 101粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值