Tag: 二元搜索树

显示Splay树的方法

我已经构建了一个展开树,我正在尝试按顺序将其打印出来,以便当您将头转向左侧时,您可以正常方式看到树。 我编写了以下代码,它输出树有点正确,但它在最右边的节点上添加了额外的空格,并没有为应该放在根节点下面的所有子节点添加空格: public void printReverseInOrder() { if (root != null) { reverseInOrder(root, 0); } else { System.out.println(); } } public void reverseInOrder(BSTnode h, int indent) { if (h != null) { for (int i = 0; i < indent; i++) { System.out.print(" "); } indent++; reverseInOrder(h.right, indent); reverseInOrder(h.left, indent); System.out.println(h.data); indent–; } } 我觉得这可能是我的递归或我的缩进添加和减少的位置的错误。

平衡二叉搜索树

好吧,我想要一个二元搜索树来平衡,我知道为什么它不起作用,但我不知道如何解决它。 这就是我的平衡方法。 public void balance(){ if(isEmpty()){ System.out.println(“Empty Tree”); return; } if(!isEmpty()){ values = new Object[count()]; index = 0; createAscendingArray(root); clear(); balanceRecursive(0, index); values = null; } } private void createAscendingArray(TreeNode current){ if(current == null) return; if(current.getLeftNode() != null) createAscendingArray(current.getLeftNode()); else if(current.getRightNode() != null) createAscendingArray(current.getRightNode()); values[index] = current.getData(); index++; } private void balanceRecursive(int low, int high){ […]

Javagenerics问题:类“不在类型变量的范围内”错误。

我正在研究一个涉及generics的课程。 public interface Keyable {public String getKey();} public interface DataElement extends Comparable<Keyable>, Keyable, Serializable {…} public class Course implements DataElement {…} public interface SearchTree<K extends Comparable<Keyable> & Keyable> extends Serializable {…} public class MySearchTree implements SearchTree { … private class Node { public Course data; public Node left; public Node right; … } } 当尝试在MySearchTree的声明中使用Course类时,我收到一个类型参数错误,指出“Course不在类型变量K的范围内”。 […]