首页 > 其他 > 详细

LeetCode -- Convert Sorted Array to Binary Search Tree

时间:2015-10-17 01:51:15      阅读:261      评论:0      收藏:0      [点我收藏+]
题目描述:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.


就是对一个排序的序列生成高度平衡的二叉树。


思路:
本题的算法思路属于分治。


即在数组nums取中间元素nums[m]并生成节点添加到树上,然后对左右分别做DFS。即使用m左边元素生成左子树,使用m右边元素生成右子树。


实现代码:


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left;
 *     public TreeNode right;
 *     public TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public TreeNode SortedArrayToBST(int[] nums) 
    {
        if(nums == null || nums.Length == 0){
    		return null;
    	}
        var node = new TreeNode(nums[nums.Length/2]);
    	BuildTree(nums, 0, nums.Length - 1, ref node);
    	return node;
    }


private void BuildTree(int[] nums,int start, int end, ref TreeNode current)
{
	if(start > end){
		return ;
	}
	
	var m = (start + end) / 2;
	current = new TreeNode(nums[m]);
	if(start == end){
		return;
	}
	
	BuildTree(nums, start, m - 1, ref current.left);
	BuildTree(nums, m + 1, end, ref current.right);
}


}


版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode -- Convert Sorted Array to Binary Search Tree

原文:http://blog.csdn.net/lan_liang/article/details/49188195

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!