为什么这个特定代码不能用于二叉搜索树?
Why won't this particular code work for a Binary Search Tree?
我正在尝试实现二叉搜索树。我已经有了二叉树的代码,我已经多次尝试将数字插入二叉搜索树并按顺序打印出来。该代码什么也不做,即控制台上什么也没有出现。谁能告诉我这是为什么?
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 method - passed by value vs passed by reference' 上的一些资料。 https://www.javaworld.com/article/2077424/learn-java/learn-java-does-java-pass-by-reference-or-pass-by-value.html
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);
}
}
}
我正在尝试实现二叉搜索树。我已经有了二叉树的代码,我已经多次尝试将数字插入二叉搜索树并按顺序打印出来。该代码什么也不做,即控制台上什么也没有出现。谁能告诉我这是为什么?
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 method - passed by value vs passed by reference' 上的一些资料。 https://www.javaworld.com/article/2077424/learn-java/learn-java-does-java-pass-by-reference-or-pass-by-value.html
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);
}
}
}