二分探索木を考えると、その中の最初のk小さいノードを検索してください。
あなたは木とkが存在していることを前提とし、1≤k≤ツリーの概要ポイントがあります。
サンプル
入力:ルート= [2、1、 3、NULL、NULL、NULL、NULL]、K = 3
2
/
1 3
出力:3
class Solution {
public:
TreeNode* ans;
TreeNode* kthNode(TreeNode* root, int k) {
if(!root) return root;
dfs(root,k);
return ans;
}
void dfs(TreeNode* root,int &k) {
if(!root) return;
dfs(root -> left,k);
k--;
if(!k) ans = root;
dfs(root -> right,k);
}
};