leetcode 二叉搜索树中第K小的元素 python 之 一个错误的示范

第K小元素,那就大顶堆呗:

import heapq
class Solution(object):
    def kthSmallest(self, root, k):
        self.hq=[]
        def visit(root):
            if root is None:
                return
            print(root.val,self.hq)
            r_val=root.val
            if len(self.hq) < k:
                heapq.heappush(self.hq,-r_val)
                visit(root.left)
                visit(root.right)
            else:
                if r_val < -self.hq[0]:
                    heapq.heapreplace(self.hq,-r_val)
                    visit(root.left)
                    visit(root.right)
                else:
                    visit(root.left)
        visit(root)
        return -self.hq[0]

好吧,写的过程中就觉得很蠢
它已经排好序了,所以,在操作得当的前提下,不会出现先装大的后装小的。只需要从小往大装就好,也就不需要堆。

class Solution(object):
    def kthSmallest(self, root, k):
        self.hq=[]
        def visit(root):
            if root is None:
                return
            visit(root.left)
            r_val=root.val
            if len(self.hq) < k: #hq 没装到k个
                self.hq.append(r_val)
                visit(root.right)
            else:
                return
        visit(root)
        return self.hq[-1]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 以前我对你弃如敝履,现在我对你爱不释手。 从小学到高中,写作文一直是我最头疼的一件事,它不像数学,有攻克它的欲望和...
    之子戚戚阅读 338评论 0 1
  • 她们不屈从于 “什么年龄就该做什么事”的既定套路, 她们活在自己的次元和节奏里, 悠然自得, 不囿于家长里短,厨房...
    一加雨录阅读 309评论 0 0
  • 月牙儿悄悄躲在云后 鸟儿落在窗前树梢头 叽叽喳喳轻轻的叫着 快看那村头腊梅红透 穿过薄薄晨雾的宁谧 看家乡已是街区...
    芽滴滴阅读 1,516评论 20 78

友情链接更多精彩内容