h5自助建站系统,睢宁做网站,商城网站,新闻头条 今天题目描述#xff1a;给定一个二叉搜索树的根节点 #xff0c;和一个整数 #xff0c;请你设计一个算法查找其中第 个最小元素#xff08;从 1 开始计数#xff09;。 获得更多#xff1f;算法思路:代码文档#xff0c;算法解析的私得。 运行效果 完整代码 /*** 2 * Aut… 题目描述给定一个二叉搜索树的根节点 和一个整数 请你设计一个算法查找其中第 个最小元素从 1 开始计数。 获得更多算法思路:代码文档算法解析的私得。 运行效果 完整代码 /*** 2 * Author: LJJ* 3 * Date: 2023/8/21 13:31* 4*/
public class KthSmallestElement {static class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(int val){this.val val;}}private int count 0; // 计数器用于记录已经访问的节点个数private int result 0; // 存储第 k 个最小元素的值public int kthSmallest(TreeNode root, int k){inorderTraversal(root,k); //开始中序遍历查找第k个最小元素return result;}private void inorderTraversal(TreeNode node, int k){if (node null || count k){return; //诋毁终止条件节点为空或计数器达到k}inorderTraversal(node.left, k); // 递归遍历左子树count; //计数器加一if (count k){result node.val; // 如果计数器等于 k说明找到第 k 个最小元素}inorderTraversal(node.right, k); // 递归遍历右子树}public static void main(String[] args) {// 构建二叉搜索树TreeNode root new TreeNode(5);root.left new TreeNode(2);root.left.right new TreeNode(4);root.right new TreeNode(9);root.right.left new TreeNode(6);root.right.right new TreeNode(10);KthSmallestElement solution new KthSmallestElement();int k 3; // 要找第 k 个最小元素int result solution.kthSmallest(root, k);System.out.println(第 k 个最小元素是: result); // 输出结果}
}