概述
给定一棵二叉搜索树,请找出其中第 k 大的节点的值。
示例 1:
输入: root = [3,1,4,null,2], k = 1
3
/
1 4
2
输出: 4
示例 2:
输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/
3 6
/
2 4
/
1
输出: 4
限制:
1 ≤ k ≤ 二叉搜索树元素个数
java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int res,k;
public int kthLargest(TreeNode root, int k) {
this.k=k;
dfs(root);
return res;
}
void dfs(TreeNode root){
if(root==null) return;
dfs(root.right);
if(k==0)return;
if(--k==0) res=root.val;
dfs(root.left);
}
}
python
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def kthLargest(self, root, k):
"""
:type root: TreeNode
:type k: int
:rtype: int
"""
def dfs(root):
if not root:return
dfs(root.right)
self.k-=1
if self.k==0:
self.res=root.val
return
dfs(root.left)
self.k=k
self.res=0
dfs(root)
return self.res
最后
以上就是无私眼睛为你收集整理的剑指 Offer 54. 二叉搜索树的第k大节点(java+python)的全部内容,希望文章能够帮你解决剑指 Offer 54. 二叉搜索树的第k大节点(java+python)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复