java - 按顺序检索二叉搜索树中的元素

标签 java recursion null binary-search-tree

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

我的主要问题是如何将这个算法实现到返回数组列表的函数中。

下面是类(class)的开始:

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 的情况。

关于java - 按顺序检索二叉搜索树中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58595696/

相关文章:

java - AndEngine GLES2 中 1 秒过去时,ITimerHandler 减少 2,而不是 1

javascript - 如何在 Yeoman 中使用 promises 进行递归提示?

python迷宫递归不递归

c# - 什么是NullReferenceException,我该如何解决?

java - 按下返回键后,所有内容都会最小化

java - 通过 Java 应用 XSLT 进行通用 XML 排序?

python - Python 中的递归函数不返回任何值

elasticsearch - 在elasticsearch中搜索其值为NULL或任何特定值的字段

java - 使用闭包在 Groovy 中检查列表成员的字段是否为 null

java - 如何在 Java 中按周映射日期?