已解答
中等
相关标签
相关企业
提示
给定一个二叉搜索树的根节点 root
,和一个整数 k
,请你设计一个算法查找其中第 k
小的元素(从 1 开始计数)。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def search(self,root,k):
if root==None:
return
left = self.search(root.left,k)
self.count +=1
if self.count == k:
# print(root.val)
return root.val
right = self.search(root.right,k)
if left!=None:
return left
if right!=None:
return right
def kthSmallest(self, root, k):
"""
:type root: Optional[TreeNode]
:type k: int
:rtype: int
"""
# 中序遍历存到数组里面进行查找
# 在遍历的时候记录count来找
self.count = 0
return self.search(root,k)
中序遍历得到结果,然后记录一个值,表示打印了几个值了,最终得到第k个