剑指Offer-54 二叉搜索树的第k个结点

题目:

给定一棵二叉搜索树,请找出其中的第k小的结点。
你可以假设树和k都存在,并且1≤k≤树的总结点数。
样例
输入:root = [2, 1, 3, null, null, null, null] ,k = 3
2
/
1 3
输出:3

解答:

class Solution():
    def kthNode(self, root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: TreeNode
        """
        if k <= 0:
            return
        self.count = 0
        self.k = k
        self.kth = None
        self.iterate(root)
        return self.kth
    
    def iterate(self, root):
        if not root:
            return
        else:
            if root.left:
                self.iterate(root.left)
            self.count += 1
            if self.count == self.k:
                self.kth = root    
            if root.right:
                self.iterate(root.right)

猜你喜欢

转载自blog.csdn.net/u013796880/article/details/84886310