Leetcode 108: Convert Sorted Array to Binary Search Tree

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

 

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     public int val;
 5  *     public TreeNode left;
 6  *     public TreeNode right;
 7  *     public TreeNode(int x) { val = x; }
 8  * }
 9  */
10 public class Solution {
11     public TreeNode SortedArrayToBST(int[] nums) {
12         return DFS(nums, 0, nums.Length - 1);
13     }
14     
15     private TreeNode DFS(int[] nums, int start, int end)
16     {
17         if (start > end) return null;
18         if (start == end) return new TreeNode(nums[start]);
19         
20         int mid = start + (end - start) / 2;
21         var root = new TreeNode(nums[mid]);
22         root.left = DFS(nums, start, mid - 1);
23         root.right = DFS(nums, mid + 1, end);
24         
25         return root;
26     }
27 }

 

posted @ 2017-11-15 11:41  逸朵  阅读(138)  评论(0)    收藏  举报