题目
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
思路
二叉搜索树的中序遍历顺序即为树中所有节点的升序排列顺序。因此按照中序遍历所访问到的第k个节点即为第k小节点。此处用一变量index记录访问到了第几个节点。
代码
public class Solution {
int index = 0;
TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot==null)
return null;
TreeNode left = KthNode(pRoot.left, k);
if(left!=null) return left;
if(++index==k) return pRoot;
TreeNode right = KthNode(pRoot.right, k);
if(right!=null) return right;
return null;
}
}