Что я могу сделать, чтобы исправить ошибку StackOverFlow / GC Overhead в моем коде?

Я пытаюсь завершить лабораторную работу в школе, но получаю сообщение об ошибке StackOverFlow и GC Overhead. По сути, мне нужно распечатать красно-черное дерево в порядке порядка.

    public String levelOrder(RedBlackNode<T> root){
        ArrayList<ArrayList<T>> result = new ArrayList<>();
        traverse(root, 0, result);
        Stack<ArrayList<T>> stack = new Stack<ArrayList<T>>();
        for (ArrayList<T> row : result) {
            stack.push(row);
        }
        result = new ArrayList<>();
        while (!stack.isEmpty()) {
            result.add(stack.pop());
        }
        return result.toString();
    }


    private void traverse(RedBlackNode<T> node, int level, ArrayList<ArrayList<T>> result) {
        if (node == null) return;
        while (level >= result.size()) {
            result.add(new ArrayList<T>());
        }
        result.get(level).add(node.key());
        traverse(node.left(), level + 1, result);
        traverse(node.right(), level + 1, result);
}

0 ответов

Другие вопросы по тегам