/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if(pRoot==nullptr||k<0)
return nullptr;
vector<TreeNode*> visit;
DFS(pRoot,visit);
for(int i=0;i<visit.size();i++){
if(i==k-1)
return visit[i];
}
return nullptr;
}
void DFS(TreeNode* pRoot,vector<TreeNode*> &visit){
if(pRoot==nullptr)
return ;
DFS(pRoot->left,visit);
visit.push_back(pRoot);
DFS(pRoot->right,visit);
}
};
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if(pRoot==nullptr||k<1)
return nullptr;
TreeNode* res=nullptr;
DFS(pRoot,res,k);
return res;
}
void DFS(TreeNode* pRoot,TreeNode* &res,int &k){
if(pRoot==nullptr||k<1)
return ;
DFS(pRoot->left,res,k);
--k;
if(k==0){
res=pRoot;
return ;
}
DFS(pRoot->right,res,k);
}
};