📅  最后修改于: 2023-12-03 15:26:03.033000             🧑  作者: Mango
这是一道面试题目,主要考察计算机科学和编程方面的知识。对于程序员来说,这道题目也是一个不错的练习题目。我们一起来看看这道题目的解题思路。
给定一棵二叉搜索树,查找其中第K个最小的元素。
题目中给出的二叉搜索树具有如下性质:
可以使用中序遍历的方式,按照从小到大的顺序访问二叉树中的元素。在代码实现时,可以使用递归方式遍历二叉树,并记录已经访问的节点数目,直到找到第K个最小的元素为止。
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class Solution {
private int count = 0;
private int result = 0;
public int kthSmallest(TreeNode root, int k) {
inorderTraversal(root, k);
return result;
}
private void inorderTraversal(TreeNode node, int k) {
if (node == null || count >= k) {
return;
}
inorderTraversal(node.left, k);
count++;
if (count == k) {
result = node.val;
return;
}
inorderTraversal(node.right, k);
}
}
以上是Java语言实现的代码。我们定义了一个TreeNode
类表示二叉树节点,然后在Solution
类中实现了kthSmallest
方法。该方法使用中序遍历的方式遍历二叉树,并判断当前节点是否为第K个最小的元素。遍历过程中,我们记录已经访问的节点数目count
,直到找到第K个最小的元素为止,将结果存储在变量result
中并返回即可。