返回二叉搜索树的第n个元素

时间:2015-12-07 16:59:27

标签: java binary-search-tree

我有一个二叉搜索树,我试图使用get方法返回第n项,但我真的很难弄清楚如何这样做

public A get(int index){
}

正如你所看到的,我正在向方法传递一个int,这将是第n个元素,有人可以指出我正确的方向

1 个答案:

答案 0 :(得分:0)

您可以使用队列进行广度优先搜索。这里有一个伪代码:

BreadthFirstSearch(Node root) {
    Queue Q;
    Node n;
    Q.insert(root);

    while(Q.isEmpty != true) {
        n = Q.extract();

        if n->leftSon != null
            Q.insert(n->leftSon);

        if n->rightSon != null
            Q.insert(n->rightSon);
    }
}

在您的情况下,您可以修改此代码,并可以创建一个计数器并在do-while的condiction中使用它。例如,你可以这样做:

BreadthFirstSearch(Node root, int nthItem) {
    Queue Q;
    Node n;
    Q.insert(root);
    int i=0; 


    do {
        n = Q.extract();

        if n->leftSon != null
            Q.insert(n->leftSon);

        if n->rightSon != null
            Q.insert(n->rightSon);

        i++;
    } while(Q.isEmpty != true && i != nthItem);

    return n;            
} 

在getNthItem(int nthItem)方法中使用此方法。一旦它返回该项目,您就可以处理它。 它不是最好的代码,但只是为了让你有个主意。