Cómo crear un árbol binario de búsqueda binaria para los datos: 10, 8, 15, 7, 3, 6, 12, 5, 9,17

También utiliza el siguiente código para insertar datos en el árbol de búsqueda binario.

y también visita: –

geeksforgeeks.org

Árbol de búsqueda binaria

tutorialspoint.com

clase pública BinaryTree {

raíz del nodo público;

public BinaryTree (raíz de nodo) {

this.root = root;

}

Nodo público findSuccessor (nodo de nodo) {

nodo = searchForNode (nodo, raíz);

Nodo temp = nulo;

if (node.getRight ()! = null) {

nodo = nodo.getRight ();

while (nodo! = nulo) {

temp = nodo;

nodo = nodo.getRight ();

}

}

temperatura de retorno;

}

public void postOrder (nodo de nodo) {

if (nodo == nulo) {

regreso ;

}

postOrder (node.getLeft ());

postOrder (node.getRight ());

System.out.println (node.getData ());

}

public void inOrder (nodo de nodo) {

if (nodo == nulo) {

regreso ;

}

inOrder (node.getLeft ());

System.out.println (node.getData ());

inOrder (node.getRight ());

}

public boolean find (Node searchNode) {

búsqueda de retorno (searchNode, root);

}

Nodo público max () {

devuelve findMax (root);

}

Nodo privado findMax (nodo de nodo) {

if (node.getRight () == null) {

nodo de retorno;

}

devuelve findMax (node.getRight ());

}

Nodo público min () {

volver findMin (root);

}

Nodo privado findMin (nodo de nodo) {

if (node.getLeft () == null) {

nodo de retorno;

}

devuelva findMin (node.getLeft ());

}

búsqueda booleana privada (nodo de nodo, raíz de nodo) {

if (raíz == nulo)

falso retorno;

if (node.getData () == root.getData ()) {

volver verdadero;

} else if (node.getData () <root.getData ()) {

búsqueda de retorno (nodo, root.getLeft ());

} más {

búsqueda de retorno (nodo, root.getRight ());

}

}

Nodo privado searchForNode (nodo de nodo, raíz de nodo) {

if (raíz == nulo)

volver nulo;

if (node.getData () == root.getData ()) {

volver root;

} else if (node.getData () <root.getData ()) {

return searchForNode (nodo, root.getLeft ());

} más {

return searchForNode (nodo, root.getRight ());

}

}

inserción vacía pública (nodo de nodo) {

insertNewNode (raíz, nodo);

}

private void insertNewNode (Nodo nodo, Nodo nuevoNodo) {

if (nodo! = nulo) {

if (node.getData ()> newNode.getData ()) {

if (node.getLeft () == null) {

node.setLeft (newNode);

} más {

insertNewNode (node.getLeft (), newNode);

}

} más {

if (node.getRight () == null) {

node.setRight (newNode);

} más {

insertNewNode (node.getRight (), newNode);

}

}

}

}

}

Nodo de clase {

datos int privados;

Nodo privado a la izquierda;

derecho de nodo privado;

Nodo público (datos int) {

this.data = datos;

}

public int getData () {

devolver datos;

}

setData public void (datos int) {

this.data = datos;

}

Nodo público getLeft () {

volver a la izquierda;

}

public void setLeft (Nodo a la izquierda) {

this.left = left;

}

Nodo público getRight () {

volver a la derecha;

}

public void setRight (Nodo derecho) {

this.right = right;

}

}


Recorrido de clase pública {

public static void main (String [] args) {

BinaryTree binaryTree = nuevo BinaryTree (nuevo nodo (10));

binaryTree.insert (nuevo Nodo (8));

binaryTree.insert (nuevo Nodo (15));

binaryTree.insert (nuevo Nodo (2));

//binaryTree.insert(new Node (9));

//binaryTree.insert(new Node (13));

binaryTree.insert (nuevo Nodo (18));

/*binaryTree.preOrder(binaryTree.root);

System.out.println (“———-“);

binaryTree.postOrder (binaryTree.root);

System.out.println (“————–”);

binaryTree.inOrder (binaryTree.root); * /

binaryTree.inOrder (binaryTree.root);

//binaryTree.delete(new Node (15));

System.out.println (“—————————–”);

binaryTree.inOrder (binaryTree.root);

}

}

Las reglas recursivas para insertar un elemento en un árbol de búsqueda binario son las siguientes:

  1. Si la raíz del árbol o subárbol es nula, cree un nodo hoja (uno con dos hijos nulos) y haga que ese nodo sea la raíz del árbol o subárbol.
  2. Si el valor del elemento es menor que (o igual a) que el de la raíz del árbol o subárbol, inserte el elemento en el subárbol que es el hijo izquierdo de la raíz.
  3. De lo contrario (el valor del elemento es mayor que el de la raíz del árbol o subárbol), inserte el elemento en el subárbol que es el hijo derecho de la raíz.

Pasando por las primeras 4 inserciones:

Cuando insertamos el 10, el árbol es nulo, por lo que la raíz se convierte en un nodo de hoja única que contiene el número 10.

Cuando insertamos el 8, encontramos que 8 es menor que 10, por lo que vamos a insertar 8 en el hijo izquierdo de la raíz. Como ese hijo es nulo, ahora se convierte en un nodo hoja que contiene el número 8.

Cuando insertamos el 15, encontramos que 15 es mayor que 10, por lo que insertamos 15 en el hijo derecho de la raíz. Como ese hijo es nulo, ahora se convierte en un nodo hoja que contiene 15.

Cuando insertamos el 7, encontramos que 7 <15, así que inserte 7 en el subárbol izquierdo de la raíz, que es un nodo hoja que contiene 8. Como 7 <8, insertamos 7 en el hijo izquierdo del subárbol enraizado en 8. Ese nodo es nulo, por lo que ahora se convierte en un nodo hoja que contiene 7.

Esto le da un árbol que hasta ahora le gusta así:

10
/ \
8 15
/ /
7 7

Hay tantas referencias sobre BST que es difícil elegir una sola.