zoukankan      html  css  js  c++  java
  • [LeetCode] Convert Sorted Array to Binary Search Tree

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

    Hide Tags
     Tree Depth-first Search
     
     
    方法一:递归,也是dfs
     
    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
        public:
            TreeNode *sortedArrayToBST(vector<int> &num)
            {   
                int size = num.size();
                if(size == 0)
                    return NULL;
                 return sortedArrayToBSTInternal(num, 0, size - 1); 
    
            }   
    
            TreeNode *sortedArrayToBSTInternal(vector<int> &num, int low, int high)
            {   
    
                // the code is very important, i.e: low = 4, hight = 5, mid = 4, 
                // will call sortedArrayToBSTInternal(num, 4, 3)
                if(low > high)
                    return NULL;
                if(low == high)
                    return new TreeNode(num[low]); 
    
                int mid = (high-low)/2 + low;
               
                TreeNode *root = new TreeNode(num[mid]); 
                TreeNode *left = sortedArrayToBSTInternal(num, low, mid - 1); 
                TreeNode *right = sortedArrayToBSTInternal(num, mid + 1, high);
                root->left = left;
                root->right= right;
                return root;
            }   
    };
     
     
     
     
  • 相关阅读:
    code review
    设计原则
    知识点介绍
    REST API
    第四章 模块化React和Redux应用
    第3章 从Flux到Redux
    第二章 设计高质量的React组件
    React和Jquery比较
    第一章 React新的前端思维方式
    封装一个获取module.exports内容的方法
  • 原文地址:https://www.cnblogs.com/diegodu/p/4409809.html
Copyright © 2011-2022 走看看