一种从最大元素到最小元素打印二叉搜索树(BST)的方法

时间:2012-05-25 17:07:13

标签: java binary-search-tree

我想我必须修改其中一个遍历。我尝试修改一个从最小到最大的打印,这是一个

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;
    }

2 个答案:

答案 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);
}

应该从最大到最小打印。