230 二叉搜索数第k个小的数

给定一个二叉搜索树的根节点 root ,和一个整数 k 
请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

输入:root = [5,3,6,2,4,null,null,1], k = 3
输出:3

题解:

利用先序遍历,先将左孩子压入栈,到最左叶子节点的时候,出栈,判断 计数君 == k?,如果相等了,输出弹出节点的值,否则 计数君 计数,然后访问弹出节点的右孩子。

class Solution:
    
    def kthSmallest(self, root: TreeNode, k: int) -> int:
        count = 1
        visited = [root]
        
        while visited:
            
            if root.left:
                
                root = root.left
                visited.append(root)
                
            else:
                node = visited.pop()
                store = (node.val)
                
               
                if count==k:
                    return store
                count+=1
                if node.right:
                    
                    root = node.right
                    visited.append(root)

性能:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值