【剑指offer】63. 二叉搜索树的第k个节点(python)

题目描述

给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。

思路

《剑指offer》P285
根据二叉搜索树的特性可知,其中序遍历即为升序数组。

code

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回对应节点TreeNode
    def KthNode(self, pRoot, k):
        # write code here
        # 中序遍历二叉树
        if not pRoot or k <= 0:
            return None
        node_stack = []
        node = pRoot
        while node or node_stack:
            while node:
                node_stack.append(node)
                node = node.left
            node = node_stack.pop()
            k -= 1
            if k == 0:
                return node
            node = node.right
        if k > 0:
            return None

你可能感兴趣的:(剑指offer)