您的位置:首页 > 编程语言 > C#

【LeetCode】C# 108、Convert Sorted Array to Binary Search Tree

2017-10-25 16:05 537 查看
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

题意:给定一个升序数组,把他们转化为一个高度平衡的BST。

思路:height balanced BST的定义有如下。

一个是左右子树都为高平衡的查找二叉树。

一个是所有节点的左右子树高度差不大于1。

所以思路在于用递归,每个循环中把有序数组的中点作为根。每次把其左右数列转化为左右子树。然后把左右序列分别进入下一轮递归。

/**
* 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.Length==0) return null;
return getmid(nums,0,nums.Length-1);
}
public TreeNode getmid(int[] nums,int l,int r){
if(l>r) return null;
int mid = (l+r)/2;
TreeNode tree = new TreeNode(nums[mid]);
tree.left = getmid(nums,l,mid-1);
tree.right = getmid(nums,mid+1,r);
return tree;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode c#