给定一颗二叉搜索树,请找出其中的第k大的结点。
直接用中序遍历,遍历一次二叉搜索树,在得到第K个大的结点,为了减少时间复杂度可以提前终止搜索。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回对应节点TreeNode
def __init__(self):
self.list = []
def KthNode(self, pRoot, k):
# write code here
if not pRoot or not k:
return
def Traversal(node):
# 提前终止搜索
if len(self.list) >= k or not node:
return
Traversal(node.left)
self.list.append(node)
Traversal(node.right)
Traversal(pRoot)
if len(self.list) < k:
return
return self.list[k-1]