題目
給定一個(gè)二叉搜索樹的根節(jié)點(diǎn)?root
?,和一個(gè)整數(shù)?k
?,請(qǐng)你設(shè)計(jì)一個(gè)算法查找其中第?k
?個(gè)最小元素(從 1 開始計(jì)數(shù))。
示例 1:
輸入:root = [3,1,4,null,2], k = 1 輸出:1
示例 2:文章來源:http://www.zghlxwxcb.cn/news/detail-694063.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-694063.html
輸入:root = [5,3,6,2,4,null,null,1], k = 3 輸出:3
題解
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
private int ans;// 接收答案
private int p; // 接收k
public int kthSmallest(TreeNode root, int k) {
p = k;
dfs(root);
return ans;
}
private void dfs(TreeNode root) {
//中序遍歷
if (root == null) {
return;
}
dfs(root.left);
if (--p == 0) {
ans = root.val;// 更新答案
}
dfs(root.right);
}
}
到了這里,關(guān)于每日一題 230二叉搜索樹中第K小的元素(中序遍歷)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!