leetcode230 二叉搜索树中第K小的元素

题目

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

示例

输入:root = [5,3,6,2,4,null,null,1], k = 3

输出:3

解析

这道题应该是能做出来的,首先二叉搜索树的中序遍历是递增的,那就在此基础上直接数K个树就好了

go 复制代码
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func kthSmallest(root *TreeNode, k int) int {
	ans := 0
	if root == nil || k <= 0 {
		return ans
	}
	cur := root
	stack := list.New()
	for cur != nil || stack.Len() > 0 {
		if cur != nil {
			stack.PushBack(cur)
			cur = cur.Left
		} else {
			cur = stack.Remove(stack.Back()).(*TreeNode)
			k--
			if k == 0 {
				return cur.Val
			}
            cur = cur.Right // 大意了,这一行记错了,记成pushback了
		}
	}
	return ans
}
相关推荐
Liu_Meihao2 小时前
【算法】799. 最长连续不重复子序列
数据结构·算法
正在敲代码中3 小时前
变换队列c++
数据结构·c++·算法
yonuyeung5 小时前
代码随想录算法【Day57】
数据结构·算法
居然有人6546 小时前
27.贪心算法5
算法·贪心算法
夏末秋也凉6 小时前
力扣-动态规划-62 不同路径
算法·leetcode·动态规划
工大一只猿7 小时前
贪心算法-455分发饼干
算法·贪心算法
pljnb7 小时前
【LeetCode 热题100】 240. 搜索二维矩阵 II的算法思路及python代码
算法·leetcode·矩阵
迷茫小玄森7 小时前
【R语言】Kmeans算法
算法·r语言·kmeans
居然有人6548 小时前
25.贪心算法3
算法·贪心算法
夏末秋也凉9 小时前
力扣-动态规划-70 爬楼梯
算法·leetcode·动态规划