LeetCode-230 kth smallest element in a bst 二叉搜尋樹中第K小的元素
阿新 • • 發佈:2018-11-07
題目連結
https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/
題意
中文題,對於二叉搜尋樹而言,找其中的第K小的數
題解
很有趣的題,但是很簡單,實際上就是對樹的中序遍歷,關於第K小,因為是二叉搜尋樹,所以最左邊的就是最小的,那麼中序遍歷的情況下,第一次回溯到中序就是最小的一個節點,從該節點開始判定index累加,當index == K的時候,該節點就是第K小了。主要還是考察了二叉搜尋樹的概念吧。
注意剪枝,適當剪枝能顯著提升速度,例如找到第K小以後設定flag,直接結束遍歷。
Java 程式碼
class Solution { public static int index; public static int ans; public static int flag; public static int now; public static void solve(TreeNode root){ if(root.left != null){ solve(root.left); } now++; if(flag == 1) return; if(now == index){ flag = 1; ans = root.val; return; } if(root.right != null){ solve(root.right); } } public int kthSmallest(TreeNode root, int k) { index = k; flag = 0; now = 0; solve(root); return ans; } }