对于我这样的小渣渣,一开始看题目,嗯我懂了,看例题我就懵了,这个是什么意思,稍微偷瞄了一下别人的代码,才懵懵懂懂,所有贴出来好以后自己复习
void traverse(struct TreeNode* root, int k,int* mid,int* rank){
if(root==NULL) { return; }
traverse(root->left, k,mid,rank);//遍历左子树
*rank+=1;
if(k==*rank)//执行的趟数和 k 相同就赋值并退出
{
*mid=root->val;
return;
}
traverse(root->right, k,mid,rank);//遍历右子树
}
int kthSmallest(struct TreeNode* root, int k)
{
int mid=0,rank=0;
traverse(root,k,&mid,&rank);
printf("mid=%d",mid);
return mid;
}