062二叉搜索树的第k个节点
题目:
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
方法:中序遍历+递归
思路:要找第k小的节点,因为是二叉搜索树,所以中序遍历之后的结果就是从小到大的顺序,用一个变量来记数
代码:
int index =0;//计数器
TreeNode KthNode(TreeNode root, int k)
{
TreeNode node=KthNode(root.left,k);
if(node!=null) return node;
index++;
if(index==k) return root;
node=KthNode(root.right,k);
if(node!=null) return node;
return null;
}