Значение дерева инициализируется 0 - PullRequest
0 голосов
/ 26 сентября 2018

Я построил дерево, в котором я просто пересекаю вставленные значения, но вывод содержит дополнительный 0 из-за инициализации переменной.Если инициализация переменной удалена, то программа терминируется.

Вывод для следующего: 51 15 5 0

public class TreeImplementation {

    public static class TreeDS{
        TreeDS left;
        TreeDS right;
        int data;
    }

    public static TreeDS root = new TreeDS();

    public static TreeDS insertInTree(TreeDS node,int value) {
        if(node==null) {
            node=new TreeDS();
            node.data=value;
            node.left=null;
            node.right=null;
            return node;
        }
        if(node.data>value) {
            node.left=insertInTree(node.left,value);
        }
        else if(node.data<value) {
            node.right=insertInTree(node.right,value);
        }

        return node;

    }

    public static void main(String[] args) {
        insertInTree(root, 5);
        insertInTree(root, 15);
        insertInTree(root, 51);
        inorder(root);

    }

    private static void inorder(TreeDS node) {
                if(node!=null) {
                    inorder(node.left);
                    System.out.print(" "+node.data);
                    inorder(node.right);
                }
    }

}

В чем проблема с этим кодом?

1 Ответ

0 голосов
/ 26 сентября 2018

0 берется из начального значения root.

insertInTree берет старый корень и возвращает новый корень, поэтому вам нужно что-то вроде

    TreeDS root = null;
    root = insertInTree(root, 5);
    root = insertInTree(root, 15);
    root = insertInTree(root, 51);
    inorder(root);
...