108. Convert Sorted Array to Binary Search Tree(DFS)

来源:互联网 发布:网络手势的含义带图片 编辑:程序博客网 时间:2024/06/09 18:45

1. Description

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


2. Analysis

二叉查找树的查找的时间复杂度为O(logn),与二分查找类似。给定一个有序的数列,根据二分的思想,通过递归就可以生成二叉查找树,而且是平衡的。但是对于结点的动态插入,还涉及到结点的位置变动,这样的动态插入算法相对此题则复杂许多(待复习后再写上),二叉查找树的查找和删除的时间复杂度都是O(logn)


3. Algorithm achievement

/** * 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) {      int size = nums.size();      if(size == 0) return NULL;      if(size == 1) {            return new TreeNode(nums[0]);        }           int mid = size/2;      TreeNode * root = new TreeNode(nums[mid]);      vector<int> leftSubTree(nums.begin(), nums.begin()+mid);      vector<int> rightSubTree(nums.begin()+mid+1, nums.end());      root->left = sortedArrayToBST(leftSubTree);      root->right = sortedArrayToBST(rightSubTree);      return root;    }};

更一般的插入算法(待补充)

原创粉丝点击