剣指offer――二叉は木の第kの結点を捜索します.
2030 ワード
概要
タイトルは与えられた一本の二叉検索ツリーを記述します.その中の第kの小さい結点を探してください.例えば、(5、3、7、2、4、6、8)では、3番目の小さい結点の値は、結点の数値順に4となります.
C++ACコード
タイトルは与えられた一本の二叉検索ツリーを記述します.その中の第kの小さい結点を探してください.例えば、(5、3、7、2、4、6、8)では、3番目の小さい結点の値は、結点の数値順に4となります.
C++ACコード
#include
using namespace std;
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
class Solution {
private:
int cnt;
TreeNode* ans;
public:
void Inorder(TreeNode* root){
if(cnt == 0){
return;
}
if(!root){
return;
}
this->Inorder(root->left);
cnt--;
if(cnt != 0){
ans = root;
}
this->Inorder(root->right);
}
TreeNode* KthNode(TreeNode* pRoot, int k){
if(!pRoot || k < 1){
return NULL;
}
cnt = k;
ans = NULL;
this->Inorder(pRoot);
return ans;
}
};