LeetCode 230. 二叉搜索樹中第K小的元素 (平衡樹)
阿新 • • 發佈:2018-10-13
如何 attack 有效 tac 並且 att eno del root 函數?
題目
給定一個二叉搜索樹,編寫一個函數 kthSmallest 來查找其中第 k 個最小的元素。
說明:
你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜索樹元素個數。
示例 1:
輸入: root = [3,1,4,null,2], k = 1
3
/ 1 4
2
輸出: 1
示例 2:
輸入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ 3 6
/ 2 4
/
1
輸出: 3
進階:
如果二叉搜索樹經常被修改(插入/刪除操作)並且你需要頻繁地查找第 k
小的值,你將如何優化 kthSmallest
題解
第一次寫LeetCode, 還不太會用。
在public
裏在定義一個函數遞歸中序遍歷, 記錄答案, 找到的時候return
就可以了。
不要吐槽變量名
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int index = 0, final_attack_ride; void Solve(TreeNode* root, const int &k) { if (root->left) { Solve(root->left, k); } if (index >= k) return; if (++index == k) { final_attack_ride = root->val; return; } if (root->right) { Solve(root->right, k); } } int kthSmallest(TreeNode* root, int k) { Solve(root, k); return final_attack_ride; } };
LeetCode 230. 二叉搜索樹中第K小的元素 (平衡樹)