题目描述
给定一棵二叉搜索树,请找出其中的第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