首页 > 其他 > 详细

leetcode-mid-Linked list- 230 Kth Smallest Element in a BST

时间:2019-06-03 20:37:13      阅读:93      评论:0      收藏:0      [点我收藏+]

mycode  81.40%

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def kthSmallest(self, root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: int
        """
        self.res = []
        def inorder(root):
            if not root:
                return 
            inorder(root.left)
            self.res.append(root.val)
            inorder(root.right)
        inorder(root)
        return self.res[k-1]

 

参考

思路:

我的方法中先将整个tree都遍历了一遍,其实是不必要的,那么该如何恰好在找到第k个数的时候及时退出呢-》

def kthSmallest(root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: int
        """
        s = []
        p = root
        cnt = 0
        print(p,p)
        while s or p:
            if p:
                s.append(p)
                print(if,p.val,s)
                p = p.left     
            else:
                p = s[-1].right
                cnt += 1  #上面之所以能取出p是因为已经没有左子树了,所以最后左子树的叶子就是目前数里面最小的数,计数+1
                print(else,s)
                if cnt == k:
                    return s[-1].val
                s.pop()

 

leetcode-mid-Linked list- 230 Kth Smallest Element in a BST

原文:https://www.cnblogs.com/rosyYY/p/10968964.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!