1. 程式人生 > >找出二叉查詢樹中第n大的值

找出二叉查詢樹中第n大的值

問題:

給一個二叉查詢樹(BST),找出第 k 大的值。比如:


該圖中,第3大的值是10.

分析:

我們可以通過類似中序遍歷的方法把BST從大到小排序,然後,就可以得到第 k 大的值了。程式碼如下:

public class NthNode {
	// k refers to the counter. it is a global variable.
	static int k = 0;
	//get the nth largest value in BST
	public void getNthnode(Node root, int n) {
		if (root == null) return;
		getNthnode(root.rightChild, n);
		k++;
		if (k == n) {
			System.out.print(root.toString());
			return;
		}
		getNthnode(root.leftChild, n);
	}
}

class Node {
    Node leftChild = null;
    Node rightChild = null;
    int value;

    Node(int value) {
        this.value = value;
    }

    public String toString() {
        return value + "";
    }
}
http://blog.csdn.net/beiyeqingteng