我正在制作一个程序,该程序能够按升序或降序对整数或分数列表进行排序。我正在使用 GUI,当我按下按钮时,原始列表应该添加到二叉树中。应该执行中序遍历并且该列表应该显示在 GUI 中。我已经完成了所有工作,但后来我注意到我应该使搜索树类通用。我已将类更改为泛型,但在从 GUI 调用它以实际执行遍历时遇到问题。您可以提供的任何帮助将不胜感激。
这是带有 Node 类的原始 SearchTree
public class SearchTree {
// creates the root of the tree
Node root;
// String to store the answer while tree is being traversed
private String answer = "";
SearchTree (Object x) {
root = new Node(x);
}
/* recursive method adding integers to the tree,
* placing it depending on if it is smaller or larger
* than the parent node
*/
Node insertInteger(Node node, Integer x) {
if (node == null) {
return node = new Node(x);
}
if (x < (Integer) node.parent) {
node.left = insertInteger(node.left, x);
} else {
node.right = insertInteger(node.right, x);
}
return node;
}
// recursive method for adding fractions to the tree
Node insertFraction(Node node, Fraction x) {
if (node == null) {
return node = new Node(x);
}
if (x.compareTo((Fraction) node.parent) < 1) {
node.left = insertFraction(node.left, x);
}else {
node.right = insertFraction(node.right, x);
}
return node;
}
// in order traversal for the ascending order
String inOrder(Node node) {
if (node != null) {
inOrder(node.left);
answer = answer + node.parent + " ";
inOrder(node.right);
}
return answer;
}
// reversed traversal for the descending order
String descendingOrder(Node node) {
if (node != null) {
descendingOrder(node.right);
answer = answer + node.parent + " ";
descendingOrder(node.left);
}
return answer;
}
}
class Node {
Object parent;
Node left;
Node right;
// Constructors
Node(Object theParent) {
this(theParent, null, null);
}
private Node(Object theParent, Node lChild, Node rChild) {
parent = theParent;
this.left = lChild;
this.right = rChild;
}
}
哔哔one
相关分类