码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_108_Convert Sorted Array to Binary Search Tree

时间:2015-03-07 14:15:44      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:leetcode   c++   tree   dfs   

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢技术分享


Convert Sorted Array to Binary Search Tree

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

这道题是二分查找树的题目,要把一个有序数组转换成一颗二分查找树。其实从本质来看,如果把一个数组看成一棵树(也就是以中点为根,左右为左右子树,依次下去)数组就等价于一个二分查找树。所以如果要构造这棵树,那就是把中间元素转化为根,然后递归构造左右子树。所以我们还是用二叉树递归的方法来实现,以根作为返回值,每层递归函数取中间元素,作为当前根和赋上结点值,然后左右结点接上左右区间的递归函数返回值。时间复杂度还是一次树遍历O(n),总的空间复杂度是栈空间O(logn)加上结果的空间O(n),额外空间是O(logn),总体是O(n)。


class Solution {
public:
    TreeNode *sortedArrayToBST(vector<int> &num) {
        return sortedArrayToBSTUtil( num, 0 , num.size()-1 );
    }
	TreeNode *sortedArrayToBSTUtil(vector<int> &num, int left, int right)
	{
		if(left > right)
			return NULL;
		int mid = left + (right-left)/2 ;
		TreeNode *root = new TreeNode(num[mid]);
		root->left = sortedArrayToBSTUtil( num, left , mid-1 );
		root->right = sortedArrayToBSTUtil( num, mid+1, right );
		return root;
	}
};


leetcode_108_Convert Sorted Array to Binary Search Tree

标签:leetcode   c++   tree   dfs   

原文地址:http://blog.csdn.net/keyyuanxin/article/details/44115301

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!