题目:给定一棵二叉搜索树,请给出第k大节点。
例如:二叉搜索树已经按照节点数值大小顺序排列了
示例:
输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4
class TreeNode():
def __init__(self, x: int):
self.val = x
self.left = None
self.right = None
class Tree():
def __init__(self, k: int):
self.result = None
self.k = k
def kMaxTreeNode(self, root: TreeNode):
if root is None:
return
self.kMaxTreeNode(root.right)
if self.k == 0:
return #能走到找到说明上一轮递归中已经k==0找到目标值了,后续的遍历没必要了 直接退出
self.k -= 1
if self.k == 0:
self.result = root.val
self.kMaxTreeNode(root.left)
root = TreeNode(3)
secondNode = TreeNode(1)
threeNode = TreeNode(2)
fourNode = TreeNode(4)
root.left = secondNode
secondNode.right = threeNode
root.right = fourNode
tree = Tree(3)
tree.kMaxTreeNode(root)
print(tree.result)
打印:2