首页 > 其他分享 >将有序数组转换为二叉搜索树

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

时间:2022-09-29 10:36:10浏览次数:54  
标签:right TreeNode 数组 nums int nullptr 二叉 有序 left

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

 

示例 1:


输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

示例 2:


输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。
 

提示:

1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 按 严格递增 顺序排列

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码:

TreeNode* getTree(vector<int>& nums, int left, int right){
    if(left>right){
        return nullptr;
    }
    int mid = (left + right)/2;
    TreeNode* leftNode = getTree(nums, left, mid-1);
    TreeNode* rightNode = getTree(nums, mid+1, right);
    TreeNode* node = new TreeNode(nums.at(mid), leftNode, rightNode);
    return node;
}
class Solution {
public:
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        TreeNode* node = getTree(nums, 0, nums.size()-1);
        return node;
    }
};

 

二叉树的定义

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

 

标签:right,TreeNode,数组,nums,int,nullptr,二叉,有序,left
From: https://www.cnblogs.com/yccy/p/16740547.html

相关文章

  • 数据结构与算法(数组&二维数组)
    数组集合、列表和数组集合:一个或多个元素构成的整体,里面的元素类型不一定相同,且是无序的列表:又称线性列表,有顺序且长度是可变的,没有索引有顺序,可以增删改数组:列表的实......
  • JS对象数组使用IndexOf方法得到索引
    获得数组里某一个对象的索引的最佳方法是什么呢?比如如下场景:varhello={hello:'world',foo:'bar'};varqaz={hello:'stevie',foo:'baz'}......
  • WPF 给 Pen 的 DashStyle 设置 0 0 的虚线数组将会让渲染线程消耗大量 CPU 资源
    给WPF的Pen的DashStyle属性设置00的虚线,在绘制几何图形时,绘制的几何图形的尺寸将关联渲染线程所使用的CPU资源。大约在周长大于500时,将可以从任务管理器上看......
  • .NET教程 - 数组(Array)
    更新记录转载请注明出处:2022年9月29日发布。2022年9月28日从笔记迁移到博客。System.Array说明Array类型是所有一维和多维数组的基类System.Array类型实现了ILi......
  • 二叉树 Leecode总结
    Leecode107:层序遍历,从叶子节点到根节点正常的层序遍历之后,对resList进行反转,调用Collections.reverse(resList);或者每次添加list时,从resList的头部开始添加clas......
  • el-table 处理表格数据中存在属性值为数组的情况
    当返回的数据类型如下:tableData:[{name:'张三',occupation:'经理',experiences:[{id:'123456',proje......
  • js判断数组的几种方法
    1.实例的__proto__属性非标准ie浏览器不支持letarr=[1,2,3];console.log('__proto__',arr.__proto__===Array.prototype)2.实例的constructorletarr=[1,2,3];......
  • redis有序集合中是否存在某个成员
    redis命令使用参考网页:​​http://redis.cn/commands.html​​有序集合中,redis没有命令直接判断有序集合中是否存在某个成员,自行通过代码实现,示例代码如下:#include<stdio.h......
  • JS实现数组元素位置交换
    /***数组元素交换位置*@param{array}arr数组*@param{number}index1添加项目的位置*@param{number}index2删除项目的位置*index1和index2分别是两......
  • leetcode977-有序数组的平方
    977.有序数组的平方原本直接暴力的做法没有利用到原数组是有序这个条件。这里直接把左边的绝对值大于右边的直接放到最后面,这样就减少很多不必要的操作。classSoluti......