在二进制搜索树中找到Kth元素

时间:2013-03-27 00:32:22

标签: binary-search-tree

我正在学习二进制搜索树。我想返回二叉搜索树的有序遍历的第k个元素。如何更新变量'count',或者在找到第k个元素并将其打印出来后,是否有某种方法可以突破循环?

public void kthElement(int n, int count, BinaryNode<AnyType> root){

    if( root.left !=null)
        this.kthElement(n, count, root.left);

    count++;
    if(count==n){
        System.out.println(root.element); 
        }

    else if(count!=n){
        return;}

    if( root.right != null)
        this.kthElement(n, count, root.right);
    }

1 个答案:

答案 0 :(得分:0)

我可以想到两个解决方案。

  1. 为每个节点声明一个字段,说明它的右子树和左子树中有多少个元素,从这里开始应该很容易。
  2. 如果允许使用额外的内存,请将元素复制到动态分配的排序数组(使用inorder遍历)并返回第k个元素。