题目: 给定一棵二叉搜索树,请找出其中的第k小的结点。
示例:
例如,(5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。
解法:
//中序遍历找到第k小的节点
private TreeNode lastNode = null;
private int count = 0;
TreeNode KthNode(TreeNode pRoot, int k)
{
treeInOrder(pRoot, k);
return lastNode;
}
private void treeInOrder(TreeNode pRoot, int k) {
if (pRoot == null || count >= k) {
return;
}
treeInOrder(pRoot.left, k);
count++;
if (count == k) {
lastNode = pRoot;
}
treeInOrder(pRoot.right, k);
}