Leetcode230. 二叉搜尋樹中第K小的元素
Leetcode230. 二叉搜尋樹中第K小的元素
class Solution {
public int kthSmallest(TreeNode root, int k) {
List<Integer> result = new ArrayList<>();
dfs(result, root);
if (result.isEmpty()) {
return -1;
}
Collections.sort(result);
return result.get(k - 1);
}
private void dfs(List<Integer> result, TreeNode root) {
if (root == null) {
return;
}
result.add(root.val);
dfs(result, root.left);
dfs(result, root.right);
}
}
class Solution {
public int kthSmallest(TreeNode root, int k) {
LinkedList<TreeNode> stack = new LinkedList<>();
while (true) {
while (root != null) {
stack.add(root);
root = root.left;
}
root = stack.removeLast();
if (--k == 0) {
return root.val;
}
root = root.right;
}
}
}
相關文章
- LeetCode-230-二叉搜尋樹中第K小的元素LeetCode
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 每日一題 - 劍指 Offer 54. 二叉搜尋樹的第k大節點每日一題
- 尋找陣列中第K大的元素陣列
- 程式碼隨想錄 第20天 20的總結沒看 | 654.最大二叉樹 ● 617.合併二叉樹 ● 700.二叉搜尋樹中的搜尋 ● 98.驗證二叉搜尋樹二叉樹
- Leetcode 700. 二叉搜尋樹中的搜尋(DAY 2)LeetCode
- leetcode 700. 二叉搜尋樹中的搜尋 思考分析LeetCode
- 二叉搜尋樹的操作集
- 二叉搜尋樹和二叉樹的最近公共祖先二叉樹
- 701. 二叉搜尋樹中的插入操作
- 利用非遞迴演算法來搜尋二叉樹中的某個元素java遞迴演算法二叉樹Java
- 如何在 Java 中實現二叉搜尋樹Java
- 二分搜尋樹元素的插入
- javascript實現二叉搜尋樹JavaScript
- 有序表和搜尋二叉樹二叉樹
- js實現完全排序二叉樹、二叉搜尋樹JS排序二叉樹
- 二叉搜尋樹的python實現Python
- 程式碼隨想錄 第23天 | 669. 修剪二叉搜尋樹 ● 108.將有序陣列轉換為二叉搜尋樹 ● 538.把二叉搜尋樹轉換為累加樹 ● 總結篇陣列
- JavaScript 二叉搜尋樹以及實現翻轉二叉樹JavaScript二叉樹
- 演算法篇 - 二叉搜尋樹演算法
- 資料結構-二叉搜尋樹資料結構
- 【資料結構】二叉搜尋樹!!!資料結構
- 二叉搜尋樹程式碼例項
- 6-12 二叉搜尋樹的操作集
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- Java中在二叉搜尋樹中查詢節點的父節點Java
- 資料結構之「二叉搜尋樹」資料結構
- 一文搞定二叉排序(搜尋)樹排序
- 資料結構☞二叉搜尋樹BST資料結構
- 程式碼隨想錄演算法訓練營day22 | leetcode 235. 二叉搜尋樹的最近公共祖先、701. 二叉搜尋樹中的插入操作、450. 刪除二叉搜尋樹中的節點演算法LeetCode
- 資料結構-二叉搜尋樹的實現資料結構
- Java實現二叉搜尋樹的插入、刪除Java
- 二叉樹的插入和搜尋–python實現二叉樹Python
- (40/60)整數拆分、不同的二叉搜尋樹
- python 二叉樹深度優先搜尋和廣度優先搜尋Python二叉樹
- 【資料結構】【二叉樹】四、二叉搜尋樹的特性(不斷補充)資料結構二叉樹
- 如何在Java中實現二叉搜尋樹( binary search tree)?Java
- 22天【程式碼隨想錄演算法訓練營34期】第六章 二叉樹part08 (● 235. 二叉搜尋樹的最近公共祖先 ● 701.二叉搜尋樹中的插入操作 ● 450.刪除二叉搜尋樹中的節點)演算法二叉樹