JavaAlgorithms/DataStructures/Trees/CreateBSTFromSortedArray.java
Amit Kumar 64513ff53e
Create a balanced binary search tree from a sorted array (Fixes: #2706) (#2711)
Co-authored-by: Amit Kumar <akumar@indeed.com>
2021-10-26 09:14:26 +03:00

46 lines
1.3 KiB
Java

package DataStructures.Trees;
import DataStructures.Trees.BinaryTree.Node;
/**
* Given a sorted array. Create a balanced binary search tree from it.
*
* Steps:
* 1. Find the middle element of array. This will act as root
* 2. Use the left half recursively to create left subtree
* 3. Use the right half recursively to create right subtree
*/
public class CreateBSTFromSortedArray {
public static void main(String[] args) {
test(new int[]{});
test(new int[]{1, 2, 3});
test(new int[]{1, 2, 3, 4, 5});
test(new int[]{1, 2, 3, 4, 5, 6, 7});
}
private static void test(int[] array) {
BinaryTree root = new BinaryTree(createBst(array, 0, array.length - 1));
System.out.println("\n\nPreorder Traversal: ");
root.preOrder(root.getRoot());
System.out.println("\nInorder Traversal: ");
root.inOrder(root.getRoot());
System.out.println("\nPostOrder Traversal: ");
root.postOrder(root.getRoot());
}
private static Node createBst(int[] array, int start, int end) {
// No element left.
if (start > end) {
return null;
}
int mid = start + (end - start) / 2;
// middle element will be the root
Node root = new Node(array[mid]);
root.left = createBst(array, start, mid - 1);
root.right = createBst(array, mid + 1, end);
return root;
}
}