es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Árbol binario utiliza cadena

Tengo que crear un código fuente sobre un árbol binario de cualquier tipo. Eso significa que la entrada es una cadena, así que en mi opinión, debo convertir la cadena en byte[] y luego obtener el código ASCII a partir de eso. Pero no sé cómo crear un árbol binario a partir de bytes o convertir ese byte[] en un entero. Estoy atascado en este momento.

class Node{
    int data;
    Node left, right;

    public Node(int data){
        this.data = data;
        left = right = null;
    }
}

class BinaryTree{
    public Node root;

    public void newNode(int data){
        if(root == null){
            root = newNode(root, new Node(data));
        }
    }

    private Node newNode(Node root, Node newData){
        if(root == null){
            root = newData;
            return root;
        }
        if(newData.data < root.data){
            root.left = newNode (root.left, newData);
        }else{
            root.right = newNode (root.right, newData);
        }
        return root;
    }

    public void inOrder(Node node){
        if(node !=null){
            inOrder(node.left);
            System.out.println(node.data + " ");
            inOrder(node.right);
        }else{
            return;
        }
    }

    public void preOrder(Node node){
        if(node !=null){
            System.out.println(node.data + " ");
            preOrder(node.left);
            preOrder(node.right);

        }else{
            return;
        }
    }

    public void postOrder(Node node){
        if(node !=null){
            postOrder(node.left);
            postOrder(node.right);
            System.out.println(node.data + " ");
        }else{
            return;
        }
    }
}

public class ALPROMOD5{

    public static void main(String[] args) throws UnsupportedEncodingException {
        Scanner scan = new Scanner(System.in);
        String inp;

        System.out.println("String to ASCII");
        System.out.println("Binary Tree from Converted String to Char");
        System.out.print("\nMasukan Inputan : ");
        inp = scan.nextLine();

        byte[]  bt = inp.getBytes("US-ASCII");
        System.out.print("ASCII Value of("+inp+") is : ");
        System.out.println(Arrays.toString(bt));

    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear un árbol binario a partir de una entrada de cadena, no es necesario convertirlo necesariamente a bytes y luego a códigos ASCII. Puedes usar directamente los caracteres en la cadena para crear los nodos del árbol binario.

    Suponiendo que la cadena de entrada solo contendrá letras del alfabeto, puedes crear un nodo para cada caracter alfabético y utilizar su código ASCII como valor de datos. Aquí hay un código de ejemplo que crea un árbol binario a partir de una entrada de cadena:

    class Node {
        int data;
        Node left, right;
    
        public Node(int data) {
            this.data = data;
            left = right = null;
        }
    }
    
    class BinaryTree {
        Node root;
    
        BinaryTree() {
            root = null;
        }
    
        void insert(char key) {
            root = insertRec(root, key);
        }
    
        Node insertRec(Node root, char key) {
            if (root == null) {
                root = new Node((int) key);
                return root;
            }
            if (key < root.data) {
                root.left = insertRec(root.left, key);
            } else if (key > root.data) {
                root.right = insertRec(root.right, key);
            }
            return root;
        }
    
        void inorderTraversal() {
            inorderRec(root);
        }
    
        void inorderRec(Node root) {
            if (root != null) {
                inorderRec(root.left);
                System.out.print((char) root.data + " ");
                inorderRec(root.right);
            }
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            System.out.println("Ingrese la cadena:");
            String str = scan.nextLine();
    
            BinaryTree tree = new BinaryTree();
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                tree.insert(c);
            }
    
            System.out.print("Recorrido inorder del árbol binario: ");
            tree.inorderTraversal();
        }
    }
    

    En este código, la clase BinaryTree contiene un método insert() que recibe una clave de tipo caracter y la inserta en el árbol binario. La clase Node contiene datos, punteros a los hijos izquierdo y derecho. El método insert() compara la clave con el valor de datos del nodo raíz e inserta recursivamente la clave en el subárbol izquierdo o derecho.

    El método inorderTraversal() realiza el recorrido inorder del árbol binario e imprime cada caracter correspondiente al código ASCII del valor de datos del nodo.

Comments are closed.