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

  1. 题目链接

  2. 解题思路:二叉搜索树,中序遍历,就是有序的,就可以依次得到第K小的数了

  3. 代码

    class Solution:
        # 中序遍历  就是从小到大遍历
        def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
            stack = []
            stack.append(root)
            # 中序遍历  左中右
            while stack:
                head = stack.pop()
                if head:  # 不为空  不能弹
                    # 右 中  左   使用None标记中
                    if head.right:
                        stack.append(head.right)
                    stack.append(head)
                    stack.append(None)
                    if head.left:
                        stack.append(head.left)
                else:
                    # 弹出
                    if k == 1:
                        return stack.pop().val
                    k -= 1
                    stack.pop()
            return -1
    
posted @ 2025-02-13 15:20  ouyangxx  阅读(16)  评论(0)    收藏  举报