题目:
解析:
采用中序遍历+两个全局变量 +剪枝
两个全局变量:count计数,ret返回,搜索二叉树中由于中序遍历是有序的,把K赋值给count,当count==0时就找到第K小的值,就返回ret
代码:
class Solution {
private int count;
private int ret;
public int kthSmallest(TreeNode root, int k) {
count = k;
dfs(root);
return ret;
}
private void dfs(TreeNode root){
/**中序遍历+两个全局变量+剪枝
*/
//剪枝
if(root == null || count == 0) return;
dfs(root.left);
count--;
if(count == 0) ret = root.val;
//剪枝
if(count == 0) return;
dfs(root.right);
}
}