找出二叉查找树中第n大的值
2012-04-22 03:53
162 查看
问题:
给一个二叉查找树(BST),找出第 k 大的值。比如:
该图中,第3大的值是10.
分析:
我们可以通过类似中序遍历的方法把BST从大到小排序,然后,就可以得到第 k 大的值了。代码如下:
转载请注明出处:http://blog.csdn.net/beiyeqingteng
给一个二叉查找树(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()); } getNthnode(root.leftChild, n); } public static void main(String[] args) { Node a = new Node(8); Node b = new Node(3); Node c = new Node(10); Node d = new Node(1); Node e = new Node(6); Node f = new Node(14); Node g = new Node(4); Node h = new Node(7); Node i = new Node(13); a.leftChild = b; a.rightChild = c; b.leftChild = d; b.rightChild = e; c.rightChild = f; e.rightChild = g; e.rightChild = h; f.leftChild = i; //the third largest value in BST new NthNode().getNthnode(a, 3); } } 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
相关文章推荐
- 找出二叉查找树中第n大的值
- Nth Highest Salary --- 找出第N高的工资
- 找出二叉树中最大的二叉查找树部分
- 找出第n大元素
- 设计一个算法,找出二叉树中某两个结点的第一个公共祖先.。不得将额外的结点存储在另外的数据结构中。注意:这不一定是二叉查找树。
- 程序员面试金典: 9.4树与图 4.6找出二叉查找树指定结点的下一个结点
- 找出两个含有相同元素个数的递增数列中第n小的数
- 设计一个算法,找出二叉查找树中指定结点的“下一个“结点(也即中序后继)。可以假定每个结点都含有指向父结点的连接。
- 【二叉树】找出二叉查找树中指定节点的中序遍历后续节点
- 海量数据中找出中位数或者第N大(小)数————桶的思想解决方案
- 查找二叉查找树第N大的数
- 找出二叉查找树中指定结点的”下一个"结点(也即中序后继)
- 丑数,即只有2,3,5因子的整数,找出第n 个丑数
- leetcode177-Nth Highest Salary(找出第n大的数据)
- 【谷歌面试题】找出二叉查找树中出现频率最高的元素
- 找出一个数组中的第N大数
- 找出二叉查找树中指定结点的”下一个"结点(也即中序后继)
- 如何在指定的内容中找出指定字符串的个数
- 在链表中找出倒数第K个节点
- 在字符串中找出第一个只出现一次的字符