leetcode230 Kth Smallest Element in a BST

 1 """
 2 Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.
 3 Note:
 4 You may assume k is always valid, 1 ≤ k ≤ BST's total elements.
 5 Example 1:
 6 Input: root = [3,1,4,null,2], k = 1
 7    3
 8   / \
 9  1   4
10   \
11    2
12 Output: 1
13 Example 2:
14 Input: root = [5,3,6,2,4,null,null,1], k = 3
15        5
16       / \
17      3   6
18     / \
19    2   4
20   /
21  1
22 Output: 3
23 """
24 """
25 用栈中序遍历,加一条判断语句
26 if len(res) == k
27 """
28 # Definition for a binary tree node.
29 # class TreeNode:
30 #     def __init__(self, x):
31 #         self.val = x
32 #         self.left = None
33 #         self.right = None
34 
35 class Solution:
36     def kthSmallest(self, root, k):
37         stack = []
38         res = []
39         cur = root
40         while stack or cur:
41             if cur:
42                 stack.append(cur)
43                 cur = cur.left
44             else:
45                 cur = stack.pop()
46                 res.append(cur.val)
47                 if len(res) == k:  #中序遍历,中间加一个判断语句
48                     return res[-1]
49                 cur = cur.right

 

posted @ 2020-03-03 22:49  yawenw  阅读(127)  评论(0编辑  收藏  举报