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

6 篇文章 0 订阅
6 篇文章 0 订阅


一、原文

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 the two subtrees of every node never differ by more than 1.

Example:

Given the sorted array: [-10,-3,0,5,9],

One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:

      0
    /     \
  -3      9
   /       /
-10     5


二、翻译

给定一个数组,其中元素按升序排序,将其转换为高度平衡的二叉搜索树(BST)。

对于这个问题来说,高度平衡的二叉树被定义为一个其每个节点的两个子树的深度相差不超过1的二叉树。


三、分析

BST的中序遍历是一个有序的结果,故可以得知一个有序的中间位置一定是这个BST的根节点,左右两侧对应左子树和右子树,递归定义下去就是左边的中间位置是左子树的根节点,右边的中间位置是右子树的根节点。

既然知道这个递归定义,那么代码用递归就可以了。


四、AC代码

TreeNode* sortedArrayToBST(vector<int>& nums) {
    return fuc(nums, 0, nums.size() - 1);
}

TreeNode* fuc(vector<int>& nums, int left, int right) {
    if (left > right) {
        return NULL;
    }
    int mid = (left + right) / 2;
    TreeNode* node = new TreeNode(nums[mid]);
    node->left = fuc(nums, left, mid - 1);
    node->right = fuc(nums, mid + 1, right);

    return node;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值