【二叉树】二叉搜索树的第k个节点

循环

class Solution:
    def KthNode(self, pRoot, k):
        index = 0
        stack = []
        while stack or pRoot:
            while pRoot:
                stack.append(pRoot)
                pRoot = pRoot.left
            pRoot = stack.pop()
            index += 1
            if index == k:
                return pRoot
            pRoot = pRoot.right

递归

class Solution:
    # 返回对应节点TreeNode
    index = 0
    def KthNode(self, pRoot, k):
        # write code here
        if pRoot is not None:
            node = self.KthNode(pRoot.left,k)
            if node is not None:
                return node
            self.index += 1
            if self.index == k:
                return pRoot
            node = self.KthNode(pRoot.right,k)
            if node is not None:
                return node
        return None

你可能感兴趣的:(【二叉树】二叉搜索树的第k个节点)