按顺序检索二进制搜索树中的元素



我正试图创建一个强调递归的二进制搜索树,目前我正致力于创建一个函数来按顺序返回二进制搜索树中元素的数组列表。

我的主要问题是如何将此算法实现为返回数组列表的函数。

这是课程的开始:

public class BinarySearchTree<T> {
private Comparator<T> comparator;
private T data;
private BinarySearchTree<T> left;
private BinarySearchTree<T> right;

这是我目前拥有的功能:

public List<T> getElements() {
List<T> list = new ArrayList<>();
if(data != null) {
left.getElements();
list.add(data);
right.getElements();
}
return list;
}

这是我的插入函数,我认为它是正确的,但如果问题根源于此,它可能有助于调试:

public void insert(T element) {
if(data == null) {
data = element;
}
if(element != null && data != null) {
if(comparator.compare(element, data) == -1) {
if(left == null) {
left = new BinarySearchTree<T>(element, comparator);
}
else {
left.insert(element);
}
}
if(comparator.compare(element, data) == 1) {
if(right == null) {
right = new BinarySearchTree<T>(element, comparator);
}
else {
right.insert(element);
}
}
if(comparator.compare(element, data) == 0) {
return;
}
}

您需要将对getElements的递归调用的结果添加到list(顺便说一句,这是一个真正的坏名称(。

此外,您还需要考虑如何处理left和/或right为null的情况。

最新更新