劍指offer——二叉搜尋樹的第k個結點
阿新 • • 發佈:2018-12-09
概述
題目描述 給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值為4。
C++ AC程式碼
#include <iostream>
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;
}
};