Почему этот конкретный код не работает для бинарного дерева поиска? - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь реализовать бинарное дерево поиска. У меня уже есть код для двоичного дерева, и я несколько раз пытался вставить числа в двоичное дерево поиска и распечатать их по порядку. Код ничего не делает, т.е. на консоли ничего не появляется. Может кто-нибудь сказать мне, почему это так?

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); 
        } 
    } 
}

1 Ответ

0 голосов
/ 16 ноября 2018

Это потому, что ваш корневой узел всегда будет нулевым.

Я рекомендую вам сначала прочитать некоторые материалы на тему «Метод Java - переданный по значению против переданного по ссылке». 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); 
        } 
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...