LeetCode 平衡二叉搜索树

//平衡二叉搜索数,关键在于平衡两个字,左右数的高度差不超过1,搜索树,左节点小于 根节点 小于右节点

//先谈平衡,我们找到数组的中间节点作为数的根节点,这个方法被论证过是可行的,然后我们要构建左右子树,

//在根结点处将数组一分为二,考虑左节点,应该选取左半数组中的那个数?最大的?最小的?都不行,需要选中间的

//左节点这颗子树也要是一颗平衡二叉搜索数,我们采用递归来构造

cpp 复制代码
class Solution {
public:
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        return Recursion(nums, 0, nums.size() - 1);
        //平衡二叉搜索数,关键在于平衡两个字,左右数的高度差不超过1,搜索树,左节点小于 根节点 小于右节点
        //先谈平衡,我们找到数组的中间节点作为数的根节点,这个方法被论证过是可行的,然后我们要构建左右子树,
        //在根结点处将数组一分为二,考虑左节点,应该选取左半数组中的那个数?最大的?最小的?都不行,需要选中间的
        //左节点这颗子树也要是一颗平衡二叉搜索数,我们采用递归来构造
    }
    TreeNode* Recursion(vector<int>& nums, int left, int right)
    {
        if (left > right)
        {
            return nullptr;
        }
        int mid = (left + right) / 2;
        TreeNode* root = new TreeNode(nums[mid]);
        root->left = Recursion(nums, left, mid-1);
        root->right = Recursion(nums, mid+1, right);
        return root;
    }
};
相关推荐
LYFlied5 分钟前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
式51631 分钟前
线性代数(八)非齐次方程组的解的结构
线性代数·算法·机器学习
Nandeska1 小时前
2、数据库的索引与底层数据结构
数据结构·数据库
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——翻转对
算法·排序算法·结构与算法
叠叠乐1 小时前
robot_state_publisher 参数
java·前端·算法
hweiyu002 小时前
排序算法:冒泡排序
算法·排序算法
brave and determined2 小时前
CANN训练营 学习(day9)昇腾AscendC算子开发实战:从零到性能冠军
人工智能·算法·机器学习·ai·开发环境·算子开发·昇腾ai
Dave.B2 小时前
用【vtk3DLinearGridCrinkleExtractor】快速提取3D网格相交面
算法·3d·vtk
一起养小猫2 小时前
LeetCode100天Day1-字符串匹配与Z字形变换
java·leetcode
yaoh.wang2 小时前
力扣(LeetCode) 1: 两数之和 - 解法思路
python·程序人生·算法·leetcode·面试·跳槽·哈希算法