zoukankan      html  css  js  c++  java
  • 【Convert Sorted Array to Binary Search Tree】cpp

    题目:

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

    代码:

    /**
     * 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) {
                const int len = nums.size();
                return Solution::sortedArr2BST(nums, 0, len-1);
        }
        static TreeNode* sortedArr2BST(vector<int>& nums, int begin, int end )
        {
                if ( begin>end ) return NULL;
                int mid = (begin+end+1)/2;
                TreeNode *root = new TreeNode(nums[mid]);
                root->left = Solution::sortedArr2BST(nums, begin, mid-1);
                root->right = Solution::sortedArr2BST(nums, mid+1, end);
                return root;
        }
    };

    tips:

    利用二分查找+递归。

    注意终止条件:begin>end,返回NULL。

    ===================================

    第二次过着这道题,代码与第一次写的几乎一样。

    /**
     * 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 Solution::transform(nums, 0, nums.size()-1);
            }
            static TreeNode* transform(vector<int>& nums, int begin, int end)
            {
                if ( begin>end ) return NULL;
                int mid = (begin+end)/2;
                TreeNode* root = new TreeNode(nums[mid]);
                root->left = Solution::transform(nums, begin, mid-1);
                root->right = Solution::transform(nums, mid+1, end);
                return root;
            }
    };
  • 相关阅读:
    Linux网卡设置
    Linux虚拟机-----概述(1)
    Redis缓存数据库-----概述(1)
    Spring和Mybatis的集成
    onehot编码解释
    LINUX-CUDA版本所对应的NVIDIA驱动版本号,cuda版本报错的朋友参考一下
    matplotlib画图
    pytorch实现花朵数据集读取
    轻量架构ShuffleNet V2:从理论复杂度到实用设计准则
    CBAM: 卷积块注意模块
  • 原文地址:https://www.cnblogs.com/xbf9xbf/p/4508549.html
Copyright © 2011-2022 走看看