题目描述:给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 24 6 8 中,按结点数值大小顺序第三个结点的值为4。
我们知道,由于二叉搜索树的中序遍历是排序的,所以我们可以先中序遍历整个二叉树,并把它存成一个列表,然后返回该列表的第K个值就行了
# -*- 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
list = self.tolist(pRoot)
if k <= 0 or k > len(list):
return None
return list[k-1]
def tolist(self, root):
if root == None:
return []
left = self.tolist(root.left)
right = self.tolist(root.right)
return left + [root] + right