zoukankan      html  css  js  c++  java
  • Leetcode 108. Convert Sorted Array to Binary Search Tree

    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 ) {
            
            return helper( nums, 0, nums.size() - 1);
        }
        TreeNode* helper( vector<int>& nums, int lefts, int rights )
        {
            if ( lefts > rights )   
                return nullptr;       
            
            int mid = lefts + ( rights - lefts ) / 2;  // 二分法求取中间值
            TreeNode* root = new TreeNode(nums[mid]); // 将中间值赋值给根节点
            root -> left = helper( nums, lefts, mid -1); // 递归调用,构造左子树
            root -> right = helper( nums, mid + 1, rights);// 递归, 构造右子树
            return root;
        }
    };
  • 相关阅读:
    无所不能的Ant 【转】
    fstream的文件操作
    dos下的for命令详解(zz)
    c++中vector的用法总结
    学习Git上
    IE下的document.onclick问题
    第一次面试实习感触
    大数据概述
    红旗
    词法分析
  • 原文地址:https://www.cnblogs.com/simplepaul/p/6750254.html
Copyright © 2011-2022 走看看