Java 为什么这个特定的代码不能用于二进制搜索树?
我正在尝试实现一个二进制搜索树。我已经有了一个二叉树的代码,我已经多次尝试将数字插入到二叉搜索树中并按顺序打印出来。代码不起任何作用,即控制台上不会出现任何问题。有人能告诉我为什么吗Java 为什么这个特定的代码不能用于二进制搜索树?,java,binary-tree,binary-search-tree,Java,Binary Tree,Binary Search Tree,我正在尝试实现一个二进制搜索树。我已经有了一个二叉树的代码,我已经多次尝试将数字插入到二叉搜索树中并按顺序打印出来。代码不起任何作用,即控制台上不会出现任何问题。有人能告诉我为什么吗 class BST { Node root; BST(){ root=null; } public static void main(String[] args) { BST tree = new BST(); tree.ins
class BST {
Node root;
BST(){
root=null;
}
public static void main(String[] args) {
BST tree = new BST();
tree.insert(tree.root,23);
tree.insert(tree.root,0);
tree.insert(tree.root,1);
tree.insert(tree.root,4);
tree.insert(tree.root,12);
tree.insert(tree.root,58);
tree.insert(tree.root,122);
tree.inorder(tree.root);
}
Node insert(Node root, int data) {
if (root == null) {
root = new Node(data);
return root;
}
if (data < root.data)
root.left = insert(root.left, data);
else if (data > root.data)
root.right = insert(root.right, data);
return root;
}
void inorder(Node root) {
if (root != null) {
inorder(root.left);
System.out.println(root.data);
inorder(root.right);
}
}
}
这是因为你的根节点总是空的 我建议您先阅读一些关于“Java方法-通过值传递与通过引用传递”的资料
谢谢jackycflau我真的很感激,谢谢你的链接。我阅读了这些信息,并将更深入地了解Java方法。
class BST {
Node root;
BST(){
root=null;
}
public static void main(String[] args) {
BST tree = new BST();
tree.root=tree.insert(tree.root,23);
tree.insert(tree.root,0);
tree.insert(tree.root,1);
tree.insert(tree.root,4);
tree.insert(tree.root,12);
tree.insert(tree.root,58);
tree.insert(tree.root,122);
tree.inorder(tree.root);
}
Node insert(Node root, int data) {
if (root == null) {
root = new Node(data);
return root;
}
if (data < root.data)
root.left = insert(root.left, data);
else if (data > root.data)
root.right = insert(root.right, data);
return root;
}
void inorder(Node root) {
if (root != null) {
inorder(root.left);
System.out.println(root.data);
inorder(root.right);
}
}
}