一.题目:
给定一颗二叉查找树,找到其中第k小的元素并返回它的值.
二.解题思路:
我们可以按照中序遍历的递归框架去找到第k个元素,它肯定是第k小的元素.
代码如下:
# 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
"""
#在中序遍历的过程中获得第k个数字
self.target = 0
self.value = 0
def dfs(root):
if self.value != 0:
return
if root ==None:
return
dfs(root.left)
self.target +=1
if self.target == k:
self.value = root.val
return
dfs(root.right)
dfs(root)
return self.value