劍指 Offer 54. 二叉搜尋樹的第k大節點 mark
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
// 二叉搜尋樹的中序遍歷變種(右中左,是依次遞減的序列)
int ans;
// 必須把這個設定為全域性的,不能當做df引數往下傳,要不然每個棧上的k值都會回滾。
int clock;
public int kthLargest(TreeNode root, int k) {
clock=k;
dfs(root);
return ans;
}
public void dfs(TreeNode node){
if(node==null){
return;
}
dfs(node.right);
// 優化,後面不用判斷了
if(clock==0){
return;
}
--clock;
if(clock==0){
ans=node.val;
return;
}
dfs(node.left);
}
}
相關文章
- 力扣 - 劍指 Offer 54. 二叉搜尋樹的第k大節點力扣
- 每日一題 - 劍指 Offer 54. 二叉搜尋樹的第k大節點每日一題
- 劍指offer:給定一棵二叉搜尋樹,請找出其中的第k小的結點。
- 每日一練(26):二叉搜尋樹的第k大節點
- [劍指offer] 二叉搜尋樹的後序遍歷序列
- 二叉搜尋樹的第 k 個結點
- 劍指 Offer 33. 二叉搜尋樹的後序遍歷序列
- 《劍指offer》之在完全二叉樹中新增子節點二叉樹
- 劍指offer——重建二叉樹二叉樹
- 劍指offer(四)重建二叉樹二叉樹
- 二叉搜尋樹如何刪除節點
- 230. 二叉搜尋樹中第 K 小的元素
- 劍指offer——二叉樹的映象C++二叉樹C++
- 【劍指offer】27. 二叉樹的映象二叉樹
- 劍指offer——二叉樹的深度C++二叉樹C++
- 劍指Offer-40-二叉樹的深度二叉樹
- 劍指 Offer 07. 重建二叉樹二叉樹
- 劍指offer 面試題 7 :二叉樹的下一個節點是什麼?面試題二叉樹
- 力扣 - 劍指 Offer 22. 連結串列中倒數第k個節點力扣
- LeetCode-230-二叉搜尋樹中第K小的元素LeetCode
- Leetcode230. 二叉搜尋樹中第K小的元素LeetCode
- 劍指offer | 55 - I. 二叉樹的深度二叉樹
- [劍指offer] 把二叉樹列印成多行二叉樹
- Java中在二叉搜尋樹中查詢節點的父節點Java
- 783. 二叉搜尋樹節點最小距離
- 劍指offer——連結串列中倒數第k個結點
- 力扣 - 劍指 Offer 27. 二叉樹的映象力扣二叉樹
- 【劍指offer】5.二叉樹的映象和列印二叉樹
- 劍指offer(java實現)第4題“重建二叉樹”-牛客網Java二叉樹
- (python版)《劍指Offer》JZ57:二叉樹的下一個結點Python二叉樹
- # 劍指 Offer 68 - II. 二叉樹的最近公共祖先二叉樹
- 程式碼隨想錄演算法訓練營第22天 |二叉樹part07:235. 二叉搜尋樹的最近公共祖先、701.二叉搜尋樹中的插入操作、450.刪除二叉搜尋樹中的節點演算法二叉樹
- leetcode 102 劍指Offer 32 二叉樹的層次遍歷LeetCode二叉樹
- 程式碼隨想錄演算法訓練營第19天|235. 二叉搜尋樹的最近公共祖先 ,701.二叉搜尋樹中的插入操作,450.刪除二叉搜尋樹中的節點演算法
- 劍指offer——從上往下列印二叉樹C++二叉樹C++
- 劍指offer--把二叉樹列印成多行(C++)二叉樹C++
- 二叉搜尋樹
- 劍指offer-第2章