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