I have an theoretical question about Balanced BST
.
I would like to build Perfect Balanced Tree
that has 2^k - 1
nodes, from a regular unbalanced BST
. The easiest solution I can think of is to use a sorted Array/Linked list
and recursively divide the array to sub-arrays, and build Perfect Balanced BST
from it.
However, in a case of extremely large Tree sizes, I will need to create an Array/List
in the same size so this method will consume a large amount of memory.
Another option is to use AVL
rotation functions, inserting element by element and balancing the tree with rotations depending on the Tree Balance Factor - three height of the left and right sub trees.
My questions are, am I right about my assumptions? Is there any other way to create a perfect BST
from unbalanced BST
?