题解 | #二叉搜索树的第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);
}