Как написать функцию вставки для двоичных деревьев в Java? - PullRequest
0 голосов
/ 10 марта 2020

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

    public NonEmptyBST(T element) {

        _left = new EmptyBST<T>();
        _right = new EmptyBST<T>();
        _element = element;
    }
    public BST<T> insert(T element) {
        // Your code here
        BST<T> root = new NonEmptyBST<T>(_element);
        BST<T> newTree = new NonEmptyBST<T>(element);
        BST<T> left = _left;
        BST<T> right = _right;

        if (element == _element || _element == null) {
            return newTree;
        } else {
            if (element.compareTo(_element) < 0) {
                if (left == null) {
                    left = newTree;
                    return root;
                } else {
                    return left.insert(element);
                }
            } else {
                if (right == null) {
                    right = newTree;
                    return root;
                } else {
                    return right.insert(element);
                }
            }
        }   
    }
}

Это то, что входит в мою основную функцию, которая была предоставлена ​​мне для тестирования моего кода.

public class Main {
  public static void main(String[] args) {
    BST<Integer> bst = new NonEmptyBST<Integer>(5);
    bst = bst.insert(4);
    bst = bst.insert(7);
    bst = bst.insert(1);
    printDepthFirstInOrder(bst);
  }

  // Prints the tree in depth first in-order traversal
  static void printDepthFirstInOrder(BST<Integer> tree) {
    if (tree.isEmpty()) {
          return;
      }

    printDepthFirstInOrder(tree.getLeft());
    System.out.print(tree.getElement().toString() + " ");
    printDepthFirstInOrder(tree.getRight());
  }
}
...