LeetCode热题100-二叉搜索树中第 K 小的元素

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

示例 1:

复制代码
输入:root = [3,1,4,null,2], k = 1
输出:1

方法一:中序遍历获取排序结果,然后取第k的数字即可。

python 复制代码
class Solution:
    def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
        res = []

        def inorder(node):
            if not node:
                return
            inorder(node.left)
            res.append(node.val)
            inorder(node.right)
        inorder(root)
        return res[k-1]

方法二:循环找到最左节点,然后一个个遍历找到第K的值。

python 复制代码
class Solution:
    def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
        stack = []
        cur = root
        while cur or stack:
            while cur:
                stack.append(cur)
                cur = cur.left
            cur = stack.pop()
            k -= 1
            if k == 0:
                return cur.val
            cur = cur.right
        return 0
相关推荐
城管不管3 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
月疯3 小时前
二分法算法(水平等分图形面积)
算法
豆瓣鸡4 小时前
算法日记 - Day3
java·开发语言·算法
白白白小纯4 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
Achou.Wang4 小时前
深入理解go语言-第5章 并发编程——Go的灵魂
大数据·算法·golang
The Chosen One9854 小时前
高进度算法模板速记(待完善)
java·前端·算法
圣保罗的大教堂6 小时前
leetcode 3517. 最小回文排列 I 中等
leetcode
土豆.exe7 小时前
Fastjson2 2.0.53 哈希碰撞 RCE:从原理到三种打法
算法·哈希算法
黄河123长江7 小时前
有限Abel群的结构()
算法
Jerry8 小时前
LeetCode 92. 反转链表 II
算法