题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
思路:
因为是在二叉搜索树中搜索,所以这里利用中序遍历的方式,恰好能得到从小到大的排序。这里只需要找到第k小数即可,因此不需要遍历整棵树。
import java.util.LinkedList;
public class Solution {
TreeNode KthNode(TreeNode pRoot, int k)
{
if(k<=0) return null;
TreeNode p = pRoot;
LinkedList<TreeNode> queue = new LinkedList<>();
while(p!=null || !queue.isEmpty()){
while(p!=null){
queue.add(p);
p = p.left;
}
k--;
p = queue.removeLast();
if(k==0) return p;
p = p.right;
}
return null;
}
}