Problem: Construct BST from given preorder traversal.
Approach: Straight forward to understand. Please look at the implementation for more understanding.
Implementation in C#:
Implementation in C#:
public TreeNode BstFromPreorder(int[] preorder)
{
int index = 0;
return this.BstFromPreorder(preorder, ref index, preorder[0], int.MinValue, int.MaxValue);
}
private TreeNode BstFromPreorder(int[] preorder, ref int index, int num, int min, int max)
{
if (index >= preorder.Length)
{
return null;
}
TreeNode node = null;
if (num > min && num < max)
{
node = new TreeNode(num);
++index;
if (index < preorder.Length)
{
node.left = BstFromPreorder(preorder, ref index, preorder[index], min, num);
}
if (index < preorder.Length)
{
node.right = BstFromPreorder(preorder, ref index, preorder[index], num, max);
}
}
return node;
}
Complexity: O(n)
No comments:
Post a Comment