![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/078031d9713d0f67af025333f435f729.png)
- 总的来说因为是线索二叉树,所以天生就有顺序,还是比较好操作的,采用中序遍历后就是一个有大小的序列了,然后再抽取其中的对应位置的数即可
递归
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/efa592cfc0c3aa5fe5f43ac89c529299.png)
class Solution:
def kthSmallest(self, root, k):
"""
:type root: TreeNode
:type k: int
:rtype: int
"""
def inorder(r):
return inorder(r.left) + [r.val] + inorder(r.right) if r else []
return inorder(root)[k - 1]
迭代:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7c7da5c7268b7ed535865fd8eaab2d46.png)
class Solution:
def kthSmallest(self, root, k):
"""
:type root: TreeNode
:type k: int
:rtype: int
"""
stack = []
while True:
while root:
stack.append(root)
root = root.left
root = stack.pop()
k -= 1
if not k:
return root.val
root = root.right