题解 | #二叉搜索树的第k个结点#
二叉搜索树的第k个结点
http://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a
有序队列+遍历
TreeNode KthNode(TreeNode pRoot, int k) { PriorityQueue<TreeNode> queue = new PriorityQueue<TreeNode>( new Comparator<TreeNode>() { @Override public int compare(TreeNode o1, TreeNode o2) { if (o1.val < o2.val) return -1; else if (o1.val == o2.val) return 0; else return 1; } }); pr(pRoot, queue); TreeNode ans = null; for (int i = 0; i < k; i++) { ans= queue.poll(); } return ans; } void pr(TreeNode pRoot, PriorityQueue<TreeNode> queue) { if (pRoot == null) return; queue.add(pRoot); pr(pRoot.left, queue); pr(pRoot.right, queue); }