Here's another coding exercise:
Convert a sorted list to binary search tree.
Note that the in order traversal of a binary search tree is a sorted list
The caveat is that we can only interpret a balanced binary search tree from the given list.
123456789
5
3 8
2 4 7 9
1 6
Node SortedListToBST(List<int> num, int start, int end, Node root)
{
int mid;
if ( (start + end) %2 == 0)
mid = (start + end ) / 2 + 1;
else
mid = (start + end) / 2
var node = new Node();
node.data = num[mid];
if (root != null)
if (num[mid] < root.data)
root.left = node;
else
root.right = node
node.left = SortedListToBST(num, start, mid-1, node);
node.right = SortedListToBST(num, mid + 1, end, node);
return node;
};
Convert a sorted list to binary search tree.
Note that the in order traversal of a binary search tree is a sorted list
The caveat is that we can only interpret a balanced binary search tree from the given list.
123456789
5
3 8
2 4 7 9
1 6
Node SortedListToBST(List<int> num, int start, int end, Node root)
{
int mid;
if ( (start + end) %2 == 0)
mid = (start + end ) / 2 + 1;
else
mid = (start + end) / 2
var node = new Node();
node.data = num[mid];
if (root != null)
if (num[mid] < root.data)
root.left = node;
else
root.right = node
node.left = SortedListToBST(num, start, mid-1, node);
node.right = SortedListToBST(num, mid + 1, end, node);
return node;
};
No comments:
Post a Comment