题目描述
给定一颗二叉搜索树,请找出其中的第k小的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
python实现:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回对应节点TreeNode
#法2:如果需要KthNode()的调用很频繁,则参考:https://leetcode.com/problems/kth-smallest-element-in-a-bst/
result = None
cnt = 0
def KthNode(self, pRoot, k):
# write code here
if k<=0 or pRoot is None:
return None
self.cnt = k
self.inOrder(pRoot)
return self.result
def inOrder(self, root):
if self.result is not None:
return
if root:
self.inOrder(root.left)
self.cnt -= 1
#print root.val, self.cnt
if self.cnt==0:
#self.result = root.val
self.result = root
return
self.inOrder(root.right)