Normal BST to Balanced BST Java
- Get link
- X
- Other Apps
PROGRAM TO CONVERT A NORMAL BST TO BALANCED BST
import java.util.*; /* A binary tree node has data, pointer to left child and a pointer to right child */class Node { int data; Node left, right; public Node(int data) { this.data = data; left = right = null; }} class BinaryTree { Node root; /* This function traverse the skewed binary tree and stores its nodes pointers in vector nodes[] */ void storeBSTNodes(Node root, Vector<Node> nodes) { // Base case if (root == null) return; // Store nodes in Inorder (which is sorted // order for BST) storeBSTNodes(root.left, nodes); nodes.add(root); storeBSTNodes(root.right, nodes); } /* Recursive function to construct binary tree */ Node buildTreeUtil(Vector<Node> nodes, int start, int end) { // base case if (start > end) return null; /* Get the middle element and make it root */ int mid = (start + end) / 2; Node node = nodes.get(mid); /* Using index in Inorder traversal, construct left and right subtress */ node.left = buildTreeUtil(nodes, start, mid - 1); node.right = buildTreeUtil(nodes, mid + 1, end); return node; } // This functions converts an unbalanced BST to // a balanced BST Node buildTree(Node root) { // Store nodes of given BST in sorted order Vector<Node> nodes = new Vector<Node>(); storeBSTNodes(root, nodes); // Constucts BST from nodes[] int n = nodes.size(); return buildTreeUtil(nodes, 0, n - 1); } /* Function to do preorder traversal of tree */ void preOrder(Node node) { if (node == null) return; System.out.print(node.data + " "); preOrder(node.left); preOrder(node.right); } // Driver program to test the above functions public static void main(String[] args) { /* Constructed skewed binary tree is 10 / 8 / 7 / 6 / 5 */ BinaryTree tree = new BinaryTree(); tree.root = new Node(10); tree.root.left = new Node(8); tree.root.left.left = new Node(7); tree.root.left.left.left = new Node(6); tree.root.left.left.left.left = new Node(5); tree.root = tree.buildTree(tree.root); System.out.println("Preorder traversal of balanced BST is :"); tree.preOrder(tree.root); }}
OUTPUT:
Preorder traversal of balanced BST is : 7 5 6 8 10
- Get link
- X
- Other Apps
Comments
Post a Comment