230二叉搜索树中第K个小的元素
程序员文章站
2022-05-20 19:09:39
...
题目描述
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。
说明:
你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。
思路分析
BST中序遍历升序的特性,基于中序遍历改。
递归终止的条件是什么?一次递归中要进行什么操作?递归想要返回什么信息?
终止条件:结点为空
递归中操作:count记录当前为第n个节点,当count=k,赋值返回。
代码实现
public int kthSmallest(TreeNode root, int k) {
if (root == null) {
return 0;
}
process(root, k);
return ret;
}
int count = 0,ret=0;
public void process(TreeNode root, int k) {
if (root == null) {
return;
}
process(root.left, k);
if (++count == k) {
ret = root.val;
return;
}
process(root.right, k);
}
上一篇: 力扣206. 反转链表
下一篇: LeetCode 61. 旋转链表