题目描述:
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解题思路:
根据二叉搜索树的性质, 由于二叉搜索树的中序遍历是从小到大排序的。 所以用一个变量cnt
初始为0
记录遍历结点的个数,每遍历一个结点cnt
自增1,当cnt
等于k时,就返回所遍历的那个结点即可。
代码:
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回对应节点TreeNode
def KthNode(self, pRoot, k):
if pRoot==None: return None
stack = []
cnt = 0
node = pRoot
while node or stack:
while node:
stack.append(node)
node = node.left
if stack:
cnt += 1
node = stack.pop()
if cnt==k:
return node
node = node.right
return None
参考链接: