Я нашел двоичный код вставки дерева поиска на веб-сайте,
https://www.geeksforgeeks.org/binary-search-tree-set-1-search-and-insertion/
, а часть кода, как показано ниже,
if (root == null) {
root = new Node(key);
return root;
}
, и яМы думали, что нам не нужны никакие операторы return, потому что сам root является ссылочным типом (Node), поэтому достаточно обновить root.
, поэтому я изменил код следующим образом.
class BinarySearchTree {
class Node {
int key;
Node left, right;
public Node(int item) {
key = item;
left = right = null;
}
}
Node root;
BinarySearchTree() {
root = null;
}
void insert(int key) {
insertRec(root, key);
}
/* A recursive function to insert a new key in BST */
void insertRec(Node root, int key) {
if (root == null) {
root = new Node(key);
}
if (key < root.key)
insertRec(root.left, key);
else if (key > root.key)
insertRec(root.right, key);
}
// Driver Program to test above functions
public static void main(String[] args) {
BinarySearchTree tree = new BinarySearchTree();
tree.insert(50);
tree.insert(20);
System.out.println(tree.root);
}
}
, но tree.root возвращает ноль.
почему это происходит?