62.二叉搜索树的第k个结点
题目 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 思路 二叉搜索树的中序遍历是升序的,要找到第k个结点,就中序遍历到第k个结点就行了。 代码 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { int cnt ; TreeNode * res ; public : TreeNode * KthNode ( TreeNode * pRoot , int k ) { cnt = 0 ; res = nullptr ; helper ( pRoot , k ) ; return res ; } void helper ( TreeNode * node , int & k ) { if ( node == nullptr ) return ; helper ( node - > left , k ) ; cnt + = 1 ; if ( cnt == k ) { res = node ; return ; } helper ( node - >