El createBTree método (int [], int) no está definida para el tipo MainFunction

Nick Tess:

Estaba a punto de construir un árbol binario, Yo no utilizar el genérico debido a que el método estático no puede invocarlo así que tenía previsto utilizar la clase de objetos para reemplazarlo. De esa manera, podría entrar en cualquier tipo de valor, como int o String como yo quiero. Pero, por desgracia, aquí está, es un error. Pongo el código de abajo, y los pls ayuda con esto. Lo aprecio.

import java.util.*;

public class MainFunction {

    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3};
        BinaryTree bt = createBTree(arr,0);//this is where the error is ,(The method createBTree(int[], int) is undefined for the type MainFunction)
    }

}

public class BinaryTree 
{
        private Object val;
        private BinaryTree leftBTree;
        private BinaryTree rightBTree;


        public BinaryTree(Object val)
        {
            this.val = val;
        }

        private void clearTree()
        {
            this.val = null;
            this.leftBTree = null;
            this.rightBTree = null;
        }

        public void addRightTree (BinaryTree tree)
        {
            rightBTree = tree;
        }

        public void addLeftTree (BinaryTree tree)
        {
            leftBTree = tree;
        }

        public void editTree(Object val)
        {
            this.val = val;
        }

        public boolean isEmpty(BinaryTree tree)
        {
            if(tree != null)
                return false;
            return true;
        }

        public void deleteTree(BinaryTree tree)
        {
            tree.clearTree();
            if(tree.leftBTree != null)deleteTree(tree.leftBTree);
            if(tree.rightBTree != null)deleteTree(tree.rightBTree);
        }

        public static BinaryTree createBTree(Object[] arr,int index)
        {
            BinaryTree tree = null;
            if(index<arr.length&&arr[index] != null)
            {
                tree = new BinaryTree(arr[index]);
                tree.leftBTree = createBTree(arr,index*2+1);
                tree.rightBTree = createBTree(arr,index*2+2);
            }
            return tree;
        }

        public void preOrderTraversal(BinaryTree tree)
        {
            System.out.println(tree.val);
            if(tree.leftBTree != null)
                preOrderTraversal(tree.leftBTree);
            if(tree.rightBTree != null)
                preOrderTraversal(tree.rightBTree);
        }

        public void inOrderTraversal(BinaryTree tree)
        {
            if(tree.leftBTree != null)
                inOrderTraversal(tree.leftBTree);
            System.out.println(tree.val);
            if(tree.rightBTree != null)
                inOrderTraversal(tree.rightBTree);
        }

        public void postOrderTraversal(BinaryTree tree)
        {
            if(tree.leftBTree != null)
                postOrderTraversal(tree.leftBTree);
            if(tree.rightBTree != null)
                postOrderTraversal(tree.rightBTree);
            System.out.println(tree.val);
        }

}

Dmitry Pisklov:

En primer lugar, yo no entiendo por qué no se puede utilizar genéricos - con el método estático, que acaba de hacer método estático, también. En segundo lugar, int [] NO está Object [] - porque primitivos en Java son objetos no, por lo tanto, su código no está funcionando.

Aquí está el código fijo con los genéricos que trabaja (nota que utiliza enteros en lugar de int):

public class BinaryTree<T> {
    private T val;
    private BinaryTree<T> leftBTree;
    private BinaryTree<T> rightBTree;

    public BinaryTree(T val) {
        this.val = val;
    }

    private void clearTree() {
        this.val = null;
        this.leftBTree = null;
        this.rightBTree = null;
    }

    public void addRightTree(BinaryTree<T> tree) {
        rightBTree = tree;
    }

    public void addLeftTree(BinaryTree<T> tree) {
        leftBTree = tree;
    }

    public void editTree(T val) {
        this.val = val;
    }

    public boolean isEmpty(BinaryTree<T> tree) {
        return tree == null;
    }

    public void deleteTree(BinaryTree<T> tree) {
        tree.clearTree();
        if (tree.leftBTree != null) deleteTree(tree.leftBTree);
        if (tree.rightBTree != null) deleteTree(tree.rightBTree);
    }

    public static <T> BinaryTree<T> createBTree(T[] arr, int index) {
        BinaryTree<T> tree = null;
        if (index < arr.length && arr[index] != null) {
            tree = new BinaryTree<>(arr[index]);
            tree.leftBTree = createBTree(arr, index * 2 + 1);
            tree.rightBTree = createBTree(arr, index * 2 + 2);
        }
        return tree;
    }

    public void preOrderTraversal(BinaryTree<T> tree) {
        System.out.println(tree.val);
        if (tree.leftBTree != null)
            preOrderTraversal(tree.leftBTree);
        if (tree.rightBTree != null)
            preOrderTraversal(tree.rightBTree);
    }

    public void inOrderTraversal(BinaryTree<T> tree) {
        if (tree.leftBTree != null)
            inOrderTraversal(tree.leftBTree);
        System.out.println(tree.val);
        if (tree.rightBTree != null)
            inOrderTraversal(tree.rightBTree);
    }

    public void postOrderTraversal(BinaryTree<T> tree) {
        if (tree.leftBTree != null)
            postOrderTraversal(tree.leftBTree);
        if (tree.rightBTree != null)
            postOrderTraversal(tree.rightBTree);
        System.out.println(tree.val);
    }

    public static void main(String[] args) {
        Integer[] arr = new Integer[]{1, 2, 3};
        BinaryTree<Integer> bt = createBTree(arr, 0);
    }

}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=296916&siteId=1
Recomendado
Clasificación