我想我必须修改其中一个遍历。我尝试修改一个从最小到最大的打印,这是一个
private void printTree(BinaryTreeNode t) {
if (t != null) {
printTree(t.llink);
System.out.print(" " + t.info);
printTree(t.rlink);
}
}
但它没有用。我仍然坚持接下来应该尝试的事情。这是我正在使用的二叉搜索树:
public class BinarySearchTree extends BinaryTree {
//Default constructor.
//Postcondition: root = null;
public BinarySearchTree() {
super();
}
//Copy constructor.
public BinarySearchTree(BinarySearchTree otherTree) {
super(otherTree);
}
public class BinaryTree {
//Definition of the node
protected class BinaryTreeNode {
DataElement info;
BinaryTreeNode llink;
public DataElement getInfo() {
return info;
}
public BinaryTreeNode getLlink() {
return llink;
}
public BinaryTreeNode getRlink() {
return rlink;
}
BinaryTreeNode rlink;
}
protected BinaryTreeNode root;
//Default constructor
//Postcondition: root = null;
public BinaryTree() {
root = null;
}
//Copy constructor
public BinaryTree(BinaryTree otherTree) {
if (otherTree.root == null) //otherTree is empty.
{
root = null;
}
else {
root = copy(otherTree.root);
}
}
public BinaryTreeNode getRoot() {
return root;
}
答案 0 :(得分:2)
您发布的代码看起来可以从最小到最大排序。
如果您想要反过来排序,那么以下代码应该有效:
private void printTree(BinaryTreeNode t) {
if (t != null) {
printTree(t.rlink);
System.out.print(" " + t.info);
printTree(t.llink);
}
}
答案 1 :(得分:0)
所有你需要做的就是交换llink和rlink。要从最大到最小打印树,可以使用其中一种树遍历方法。例如,适合这种情况的是Inorder遍历,因为它根据值打印从最小到最大的树。您所要做的就是:
if(t!=null){
printTree(t.rlink);
System.out.print(" " + t.info);
printTree(t.llink);
}
应该从最大到最小打印。