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

    写题时间时长:
  • 相关阅读:
    caffe:使用C++来提取任意一张图片的特征(从内存读取数据)
    python:控制鼠标和键盘
    .dll 文件编写和使用
    python:打包成exe程序
    python:小乌龟turtle
    python:input()和raw_input()
    C++:哈希
    C++:线程(std::thread)
    GitHub:Git的使用
    链表
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10533802.html
Copyright © 2011-2022 走看看