剑指 Offer 54. 二叉搜索树的第k大节点:
题目链接 :剑指 Offer 54. 二叉搜索树的第k大节点
题目:
给定一棵二叉搜索树,请找出其中第 k 大的节点的值。
思路:
- 本题属于通过二叉搜索树性质得到有序序列类型题目。
- 根据中序遍历左根右,左子树元素大于右子树元素,那么可以知道,如果我们使用逆中序遍历可以优先得到树中第K大的元素。
AC代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int cnt=0;
int ans;
public int kthLargest(TreeNode root, int k) {
dfs(root,k);
return ans;
}
void dfs(TreeNode node,int k)
{
if(node==null)
{
return;
}
dfs(node.right,k);
cnt++;
if(cnt==k)
{
ans=node.val;
}
dfs(node.left,k);
}
}