【发布时间】: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