-
Notifications
You must be signed in to change notification settings - Fork 0
/
MinimalHeightBinaryTree.cs
38 lines (32 loc) · 1.02 KB
/
MinimalHeightBinaryTree.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Algorithms
{
/*Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height.*/
/* O(N) time */
public class MinimalHeightBinaryTree
{
public MinimalHeightBinaryTree() { }
public Node<int> add(int[] array, int start, int end)
{
if (end < start)
{
return null;
}
int mid = (start + end) / 2;
Node<int> node = new Node<int>(array[mid]);
node.Left = add(array, start, mid - 1);
node.Right = add(array, mid + 1, end);
return node;
}
public static void main()
{
int[] arr = { 2, 4, 6, 8, 11, 32, 58, 199 };
MinimalHeightBinaryTree minHeightTree = new MinimalHeightBinaryTree();
Node<int> tree = minHeightTree.add(arr, 0, arr.Length - 1);
}
}
}