1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > leetcode230. 二叉搜索树中第K小的元素(中序遍历)

leetcode230. 二叉搜索树中第K小的元素(中序遍历)

时间:2022-06-02 11:37:23

相关推荐

leetcode230. 二叉搜索树中第K小的元素(中序遍历)

给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 13/ \1 4\2输出: 1

解题思路

变量 cnt:统计已经按序遍历多少个节点了

变量 r: 记录 第 k 个最小元素的值

根据二叉搜索树中序遍历的性质,我们可以按二叉树节点大小访问二叉树,记录下第k个遍历的节点,就是我们需要找到的第 k 个最小元素

代码

/*** 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 {int r = -1;int cnt = 0;public int kthSmallest(TreeNode root, int k) {mid(root, k);return r;}public void mid(TreeNode root, int k) {if (root == null) return;mid(root.left, k);if (++cnt == k)r = root.val;mid(root.right, k);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。