zoukankan      html  css  js  c++  java
  • 230. Kth Smallest Element in a BST

    题目来源:
     https://leetcode.com/problems/kth-smallest-element-in-a-bst/
    自我感觉难度/真实难度:
     
    题意:
     
    分析:
     
    自己的代码:
    class Solution:
        def kthSmallest(self, root: TreeNode, k: int) -> int:
            self.res=0
            self.k = k
            
            def inorder(node):
                global res
                if not node:
                    return
                inorder(node.left)
                self.k-=1
                if self.k==0:
                    self.res=node.val
                    return 
                inorder(node.right)
            inorder(root)
            
            return self.res
    代码效率/结果:
     
    优秀代码:
    def kthSmallest(self, root, k):
        self.k = k
        self.res = None
        self.helper(root)
        return self.res
    
    def helper(self, node):
        if not node:
            return
        self.helper(node.left)
        self.k -= 1
        if self.k == 0:
            self.res = node.val
            return
        self.helper(node.right)
    def kthSmallest(root, k):
        stack = []
        while root or stack:
            while root:
                stack.append(root)
                root = root.left
            root = stack.pop()
            k -= 1
            if k == 0:
                return root.val
            root = root.right

    https://leetcode.com/problems/kth-smallest-element-in-a-bst/discuss/63829/Python-Easy-Iterative-and-Recursive-Solution

    代码效率/结果:
     
    自己优化后的代码:
     
    反思改进策略:

    1.读题要仔细,认真看懂题目再写

    2.如何用递归、循环从小到大遍历一个搜索树

    3.函数的输入参数,只能在自己函数范围内使用

    函数内部在定义函数,可以使用 self.k=k,使得整个solution类都可以使用self.k

    写题时间时长:
  • 相关阅读:
    java数据类型
    索引的种类和优缺点
    IntelliJ IDEA 自动导入快捷键
    KTV点歌系统------LinkedList
    KTV 点歌系统------ArrayList
    超市购物程序
    awk 入门教程
    Git 分支开发规范
    私有镜像仓库Harbor设置https、http访问
    私有镜像仓库Harbor部署
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10533802.html
Copyright © 2011-2022 走看看