no he pensado en esto por completo, pero una forma de conseguir un árbol de profundidad específica es para ordenar los elementos antes de la inserción de ellos: es decir, clasificando luego insertar N
elementos en un árbol de búsqueda binaria producirá un árbol de profundidad N
.
Usted podría será capaz de:
- Ordene los elementos
- Inserte una específica
K=4
de ellos para producir un árbol de profundidad K
- Inserte los elementos restantes de tal manera que la el árbol no se profundiza
(Por supuesto, la elección de qué K
elementos para comenzar, y una estrategia para la inserción de los elementos restantes es la parte difícil? -, pero tal vez esto sería un buen comienzo)
Editar : Creo que es posible una solución general, suponiendo que K
es lo suficientemente grande. ¿Qué tal esto:
- Dadas
10, 7, 16, 12, 5, 11, 2, 20, 1, 14
- Ordenar los elementos:
1, 2, 5, 7, 10, 11, 12, 14, 16, 20
- inserte el último K = 4 elementos, entonces el último K-1, entonces K-2, y así sucesivamente, hasta llegar a 1 .
Por ejemplo, después de la clasificación y la inserción de la última 4:
12
\
14
\
16
\
20
... entonces después de insertar el último 3:
12
/\
7 14
\ \
10 16
\ \
11 20
... entonces después de la última 2:
12
/\
7 14
/\ \
2 10 16
\ \ \
5 11 20
... y finalmente, después de insertar el último elemento:
12
/\
7 14
/\ \
2 10 16
/\ \ \
1 5 11 20
... te queda una BST de altura K = 4.
Tenga en cuenta que este enfoque solo funcionará cuando K
sea lo suficientemente grande, específicamente, cuando K(K+1)/2 >= N
.
posible duplicado de [Equilibrio de una Binary Tree (AVL)] (http://stackoverflow.com/questions/133610/balancing-a-binary-tree-avl) – Flexo
Es necesario el [Equilibrio de Binary Tree] (http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) –
No busco construir un árbol equilibrado como tal, más determino un ordenamiento de los enteros que obtendrían una altura de 4. – Tobi3