二叉搜尋樹的第 k 個結點
給定一棵二叉搜尋樹,請找出其中的第 k 小的結點
解題思路
根據二叉搜尋樹的性質,按照中序遍歷的順序列印出來正好就是排序好的順序,所以,按照中序遍歷順序找到第 k個結點就是結果
在遍歷過程中,如果發現有符合條件的結點,則直接遞迴向上返回,因此返回的 node 必然不為空,正好符合判斷條件。如果不做 node 是否為 null 的判斷,則目標結點會被其父結點所覆蓋
public class Solution {
int count = 1;
TreeNode KthNode(TreeNode pRoot, int k) {
if(pRoot != null) {
TreeNode node = KthNode(pRoot.left, k);
if(node != null) {
return node;
}
if(count == k) {
return pRoot;
}
count++;
node = KthNode(pRoot.right, k);
if(node != null) {
return node;
}
}
return null;
}
}
相關文章
- 每日一練(26):二叉搜尋樹的第k大節點
- 230. 二叉搜尋樹中第 K 小的元素
- 劍指 Offer 54. 二叉搜尋樹的第k大節點 mark
- LeetCode-230-二叉搜尋樹中第K小的元素LeetCode
- Leetcode230. 二叉搜尋樹中第K小的元素LeetCode
- 力扣 - 劍指 Offer 54. 二叉搜尋樹的第k大節點力扣
- JZ-062-二叉查詢樹的第 K 個結點
- 劍指offer:給定一棵二叉搜尋樹,請找出其中的第k小的結點。
- 每日一題 - 劍指 Offer 54. 二叉搜尋樹的第k大節點每日一題
- 二叉搜尋樹的結構
- 二叉搜尋樹的2層結點統計
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 【資料結構】二叉搜尋樹!!!資料結構
- 資料結構-二叉搜尋樹資料結構
- 二叉搜尋樹
- 程式碼隨想錄 第20天 20的總結沒看 | 654.最大二叉樹 ● 617.合併二叉樹 ● 700.二叉搜尋樹中的搜尋 ● 98.驗證二叉搜尋樹二叉樹
- 二叉搜尋樹如何刪除節點
- 程式碼隨想錄演算法訓練營第第20天 | 654.最大二叉樹 、617.合併二叉樹 、700.二叉搜尋樹中的搜尋、98.驗證二叉搜尋樹演算法二叉樹
- 資料結構之「二叉搜尋樹」資料結構
- 資料結構☞二叉搜尋樹BST資料結構
- 程式碼隨想錄演算法訓練營第22天 |二叉樹part07:235. 二叉搜尋樹的最近公共祖先、701.二叉搜尋樹中的插入操作、450.刪除二叉搜尋樹中的節點演算法二叉樹
- 程式碼隨想錄 第23天 | 669. 修剪二叉搜尋樹 ● 108.將有序陣列轉換為二叉搜尋樹 ● 538.把二叉搜尋樹轉換為累加樹 ● 總結篇陣列
- 資料結構-二叉搜尋樹的實現資料結構
- 二叉搜尋樹的操作集
- Day20 | 654.最大二叉樹 、 617.合併二叉樹 、 700.二叉搜尋樹中的搜尋 98.驗證二叉搜尋樹二叉樹
- 程式碼隨想錄演算法訓練營第19天|235. 二叉搜尋樹的最近公共祖先 ,701.二叉搜尋樹中的插入操作,450.刪除二叉搜尋樹中的節點演算法
- 二叉搜尋樹和二叉樹的最近公共祖先二叉樹
- 從二分搜尋到二叉搜尋樹
- Leetcode 700. 二叉搜尋樹中的搜尋(DAY 2)LeetCode
- 783. 二叉搜尋樹節點最小距離
- 二叉搜尋樹的python實現Python
- 96. 不同的二叉搜尋樹
- 【資料結構】【二叉樹】四、二叉搜尋樹的特性(不斷補充)資料結構二叉樹
- leetcode 700. 二叉搜尋樹中的搜尋 思考分析LeetCode
- 程式碼隨想錄day18 || 530 二叉搜尋樹最小差,501 二叉搜尋樹眾數,236 二叉搜尋樹最近公共祖先
- javascript實現二叉搜尋樹JavaScript
- 有序表和搜尋二叉樹二叉樹
- js實現完全排序二叉樹、二叉搜尋樹JS排序二叉樹