二叉搜索树的第k小

230. 二叉搜索树中第 K 小的元素

已解答

中等

相关标签

相关企业

提示

给定一个二叉搜索树的根节点 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个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值