AVL Tree pero muestra error

R

Desconozco la solucion de esto, un programa de un AVLTREE como puedo solucionar el error
error: no se puede encontrar el nodo de símbolo = rotar con el niño derecho (nodo);

importar java.util.Scanner;

class Node
{
    int element;
    int h;
    Node leftChild;
    Node rightChild;
    
public Node() { leftChild = null; rightChild = null; element = 0; h = 0; } public Node(int element) { leftChild = null; rightChild = null; this.element = element; h = 0; } } class ConstructAVLTree { private Node rootNode;
public ConstructAVLTree() { rootNode = null; }
public void removeAll() { rootNode = null; }
public boolean checkEmpty() { if(rootNode == null) return true; else return false; }
public void insertElement(int element) { rootNode = insertElement (element, rootNode); }
private int getHeight(Node node) { return node == null ?-1 : node.h; }
private int getMaxHeight(int leftNodeHeight, int rightNodeHeight) { return leftNodeHeight > rightNodeHeight ? leftNodeHeight : rightNodeHeight; }
private Node insertElement(int element, Node node) { if (node== null) node = new Node(element); else if (element < node.element) { node.leftChild = insertElement( element, node.leftChild); if (getHeight(node.leftChild)- getHeight(node.rightChild) == 2) if (element < node.leftChild.element) node = rotateWithLeftChild(node); else node = doubleWithLeftChild(node); } else if ( element > node.element) { node.rightChild = insertElement( element, node.rightChild); if (getHeight(node.rightChild)- getHeight(node.leftChild) == 2) if (element > node.rightChild.element) node = rotateWithRightChild(node); else node = doubleWithRightChild(node);
} else node.h = getMaxHeight(getHeight(node.leftChild), getHeight(node.rightChild))+1; return node; }
private Node rotateWithLeftChild(Node node2) { Node node1 = node2.leftChild; node2.leftChild = node1.rightChild; node1.rightChild = node2; node2.h = getMaxHeight( getHeight(node2.leftChild), getHeight(node2.rightChild)) + 1; node1.h = getMaxHeight( getHeight(node1.leftChild), node2.h) + 1; return node1; } private Node doubleWithLeftChild(Node node3) {
node3.leftChild = rotateWithRightChild( node3.leftChild); return rotateWithLeftChild (node3); }
private Node doubleWithRightChild( Node node1) { node1.rightChild = rotateWithLeftChild( node1.rightChild); return rotateWithRightChild(node1); }
public int getTotalNumberOfNodes() { return getTotalNumberOfNodes(rootNode); } private int getTotalNumberOfNodes(Node head) { if (head==null) return 0; else { int length = 1; length = length + getTotalNumberOfNodes(head.leftChild); length = length + getTotalNumberOfNodes(head.rightChild); return length; } } public boolean searchElement(int element) { return searchElement(rootNode, element); }
private boolean searchElement(Node head, int element) { boolean check = false; while ((head != null) && !check) { int headElement = head.element; if ( element < headElement) head = head.leftChild; else if (element > headElement) head = head.rightChild; else { check = true; break; } check = searchElement(head, element); } return check; }
public void inorderTraversal() { inorderTraversal(rootNode); } private void inorderTraversal(Node head) { if (head != null); { inorderTraversal(head.leftChild); System.out.print(head.element+ ""); inorderTraversal(head.rightChild); } } public void preorderTraversal() { preorderTraversal(rootNode); } private void preorderTraversal(Node head) { if (head != null) { System.out.print(head.element + ""); preorderTraversal(head.leftChild); preorderTraversal(head.rightChild); } } public void postorderTraversal() { postorderTraversal(rootNode); } private void postorderTraversal(Node head) { if (head!= null) { postorderTraversal(head.leftChild); postorderTraversal(head.rightChild); System.out.print(head.element+ ""); } }
} error: cannot find symbol "node = rotateWithRightChild(node);"

Este es el código de mi programa, es un árbol AVL pero muestra error: no se puede encontrar el símbolo. Este mensaje de error indica que el compilador no puede encontrar el símbolo scaler. Esto suele ocurrir cuando un método o variable no está definido en el ámbito actual.

vivora

By ChatGPT:

El error "cannot find symbol" se produce cuando se hace referencia a una variable o método que no está definido en la clase actual o en el ámbito actual. En este caso, el error se debe a que el método rotateWithRightChild() no está definido en la clase ConstructAVLTree.

Parece que este método está definido en la clase Node. Por lo tanto, para solucionar el error, debes cambiar el nombre del método rotateWithRightChild() en la clase Node a un nombre diferente que no se solape con ningún otro método en la clase ConstructAVLTree. Luego, debes actualizar el código en ConstructAVLTree para llamar al nuevo nombre del método.

Soltrac

Llámame loco, pero rotateWithRightChild no está ni definido ni implementado en ningún lado

3
12 días después
bLaKnI

¿Se sigue haciendo esto en las universidades?

1 respuesta
sergioRG

#4 Por qué iba a dejar de darse? Un AVL tree no va a dejar de ser incorrecto nunca, es un concepto inmortal.

Además que al menos hace usar el cerebro a la gente un poco

1 respuesta
desu

#5 este avl tree es una mierda usando linked list en lugar de array... al menos cachea una linea entera por nodo para el pre-fetch

el concepto puede ser immortal pero la implementacion esta mal y nunca vas a usar esto

en la universidad se deberia enseñar la realidad, no lo que era |facil de enseñar hace 50 años| que aun usan los profesores deprecated que no tienen ni idea de implementaciones modernas

Usuarios habituales