1.本题知识点
二叉树,递归
2. 题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
3. 思路
二叉搜索树的特性,中序遍历结果为从小到大排序的。
Java版本:
public class Solution {
private int index = 0;
TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot == null || k < 0) return null;
return KthNodeCore(pRoot, k);
}
TreeNode KthNodeCore(TreeNode pRoot, int k){
if(pRoot == null) return null;
TreeNode node = KthNodeCore(pRoot.left,k);
if(node != null) return node;
index++;
if(index == k) return pRoot;
node = KthNodeCore(pRoot.right,k);
if(node != null) return node;
return null;
}
}