【LeetCode】108. 将有序数组转换为二叉搜索树

引言

从今天开始刷LeetCode,笨鸟先飞啦。LeetCode和一般IO还不太一样,一开始没搞懂如何输入,怎么就一个类的输入地方,没有头文件,没有主函数。网上搜了一下才知道,LeetCode已经把这些东西都给你写好了,你只需要写核心算法部分就可以了。
我已经不记得上次写C++代码是什么时候了,一直写Python代码,导致现在C++的语法规则都忘记了很多,尤其是结尾的分号老是忘记加,结构体定义的一些知识也忘记的差不多了。后面要加强C++的这些基础知识了。

题目描述

原文链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

思路

这道题比较简单,很容易想到解法。输入的数据是升序的数组,我们只需要递归的将数组中间的数字给根节点,左边的数字给左子树,右边的数字给右子树。

代码实现

这里就贴一个核心代码

/**
 * 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) {
        if (nums.size()==0) return NULL;
        int mid = nums.size()/2;
        TreeNode* root = new TreeNode(nums[mid]);
        vector <int> left_nums ,right_nums;
        for(int i = 0;i<mid;i++)  left_nums.push_back(nums[i]);
        for(int i = mid+1;i<nums.size();i++) right_nums.push_back(nums[i]);
        root->left = sortedArrayToBST(left_nums);
        root->right = sortedArrayToBST(right_nums);
        return root;

    }
};

总结

1、了解了什么是搜索树
搜索树也称排序树,其特点是左子树上的所有数子都小于根节点的数字,右子树上的所有数字都大于根节点的数字。
2、以后决定还是刷OJ的题了,还是要学习一下输入输出的操作,这个也很重要,LeetCode更注重于算法的部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值