convertir árbol binario de búsqueda binaria inplace árbol usando C

votos
0

Sin utilizar ningún espacio extra convertir a binario Árbol de búsqueda binaria tree.I ocurrió la siguiente algo pero no funciona.

BTtoBST (nodo raíz *)

1.if la raíz es devuelto nulo

2.else actual = raíz

3.if (current-> izquierdo> actual) swap (current-> izquierdo, actual)

4.En (current-> derecho <actual) swap (current-> derecha, actual)

5.current = current-> izquierda

6 ir a 3 si la corriente! = NULL bien ir a 4

7.Current = current-> derecha

Gracias por adelantado

PS: Vi este enlace, pero no era de mucha ayuda !! Convertir Binary Tree -> BST (mantenimiento de la forma original del árbol)

Publicado el 29/03/2011 a las 05:49
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

Puede intercambiar los nodos incluyendo subárboles (no sólo el contenido del nodo) como en un árbol AVL http://en.wikipedia.org/wiki/AVL_tree

Hemos de tener el canje, siempre y cuando se violan las restricciones BST, el reinicio de profundidad primera búsqueda de la raíz después de cada intercambio.

Respondida el 29/03/2011 a las 08:42
fuente por usuario

votos
0

Realizar un post-fin (de abajo hacia arriba) de recorrido del árbol, teniendo los nodos que son visitadas e insertándolos en un BST.

Significa "sin ningún espacio extra" impedir la repetición?

Si no, entonces algo así como:

# top level call passes null for bst
bt_to_bst (root, bst)
  # nothing to add to bst; just return it
  if null(root) -> return bst
  # if this is a leaf node, stick it into the BST
  if null(root->left) && null(root->right)
    return bst_insert(bst, root)
  # otherwise add all of left subtree into the bst and then the right tree
  bst = bt_to_bst (root->left, bst);
  return bt_to_bst (root->right, bst);

bt_to_bstes una operación de filtrado; se necesita un bst existente y devuelve una nueva con el nodo añadido a la misma dado.

Adición de un nodo hoja a la bstes seguro porque nunca vamos a visitar de nuevo, por lo que podemos sobrescribir su lefty rightpunteros.

Respondida el 28/03/2012 a las 18:49
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more