题目
给定一棵二叉搜索树,请找出其中的第 k 小的结点。例如,5,3,7,2,4,6,8
中,按结点数值大小顺序第三小结点的值为4。
解题思路
- BST 中序遍历的结果就是排序后的结果
public TreeNode KthNode(TreeNode pRoot, int k) {
TreeNode[] nodes = new TreeNode[1];
int[] ints = {0};
KthNode(pRoot, k, nodes, ints);
return nodes[0];
}
private void KthNode(TreeNode root, int k, TreeNode[] res, int[] cursor) {
if (root == null) return;
if (res[0] != null) return;
KthNode(root.left, k, res, cursor);
cursor[0]++;
if (cursor[0] == k) {
res[0] = root;
return;
}
KthNode(root.right, k, res, cursor);
}