第k小的结点
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
重点是,如何管理kk的值与最终结果的关系。
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: int kk=-1; TreeNode* ret; TreeNode* KthNode(TreeNode* pRoot, int k) { if(k==0) return NULL; kk=k; KthNode(pRoot); if(kk<=0) return ret; else return NULL; } void KthNode(TreeNode* pRoot) { if(pRoot==NULL||kk<0) return; if(pRoot->left!=NULL) KthNode(pRoot->left); kk--; if(kk==0) ret = pRoot; if(pRoot->right!=NULL) KthNode(pRoot->right); } };