思路
- 深度优先,中序遍历
- 不存储,直接通过索引判断是否找到了答案
- 申请两个遍历,一个代表索引号,一个代表结点的值
代码
class Solution {
int i=0,res=0;
void inorder(TreeNode* root,int k){
if(root==nullptr) return ;
inorder(root->left,k);
//索引加1 找到答案停止
i++;
if(i==k){
res=root->val;
return ;
}
inorder(root->right,k);
}
public:
int kthSmallest(TreeNode* root, int k) {
inorder(root,k);
return res;
}
};