【问题标题】:Binary Tree implementation no output (java)二叉树实现无输出(java)
【发布时间】:2022-10-14 23:05:23
【问题描述】:

我试图在java中制作二叉树并以深度优先搜索方法输出树。 但是当我尝试运行它时没有输出。

这是主文件

    public static void main(String[] args)throws FileNotFoundException {
        Scanner in = new Scanner(new FileReader("bst.txt"));
        ArrayList<Integer> data = new ArrayList<Integer>();
        while(in.hasNextLine())
            data.add(in.nextInt());
        
        
        in.close();
        BST tree = new BST();

        tree.createBinaryTree(data);
        tree.traverseInOrder(tree.root);
    }

节点.java 文件

public class Node {
    
    int key;
    Node left;
    Node right;

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

二叉树.java

    Node root;

    public Node addData(Node current, int value) {
        if(current == null)
            return new Node(value);

        if(value < current.key)
            current.left = addData(current.left, value);

        else if(value > current.key)
            current.right = addData(current.right, value);

        else
            return current;
        return current;
    }


    private void add(int key) {
        root = addData(root, key);
    }

    public BinaryTree createBinaryTree(ArrayList<Integer> data){
        BinaryTree bt = new BinaryTree();
        for(int i = 0; i < data.size(); i++){
            int temp = data.get(i);
            bt.add(temp);
        }
        return bt;
    }

    public void traverseInOrder(Node node) {
        if (node != null) {
            traverseInOrder(node.left);
            System.out.print(" " + node.key);
            traverseInOrder(node.right);
        }
    }

我认为 Node.java 中的“键”或 BinaryTree.java 中的“根”为空。

但是当我尝试输出插入到树中的每个输入时,它具有值。

有什么我错过的吗?

【问题讨论】:

  • 您的 createBinaryTree 方法返回新实例,并且不会更改您调用它的对象中的任何内容。

标签: java binary-tree binary-search-tree


【解决方案1】:

您正在创建 BST tree = new BST();BinaryTree 这是两个不同的实例

您可以在 main 方法中创建一个 BinaryTree 对象,例如

    public static void main(String[] args)throws FileNotFoundException {
        Scanner in = new Scanner(new FileReader("bst.txt"));
        ArrayList<Integer> data = new ArrayList<Integer>();
        while(in.hasNextLine())
            data.add(in.nextInt());
        
        
        in.close();
        BinaryTree tree = new BinaryTree();

        tree.createBinaryTree(data);
        tree.traverseInOrder(tree.root);
    }

并将新实例删除到createBinaryTree

...
  public BinaryTree createBinaryTree(ArrayList<Integer> data){
      
        for(int i = 0; i < data.size(); i++){
            int temp = data.get(i);
            this.add(temp);
        }
        return this;
    }
....

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多