1.トピック
二分探索木を考えると、その中の最初のk小さいノードを検索してください。例えば、(5,3,7,2,4,6,8)と、第3の接続点に係る数値は、4要約です。
2.私の問題の解決
2.1前順
- アレイを横断するために二分探索木は、昇順(ツリーノード値)であり、それは最初のトラバーサル順序で
k
番号が最初にk
少数。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
int cnt=0;
TreeNode * res=NULL;
void inOrder(TreeNode *root,int k){
if(!root)return;
inOrder(root->left,k);
if(++cnt == k){
res=root;
return;
}
inOrder(root->right,k);
}
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
cnt=0;
inOrder(pRoot,k);
return res;
}
};