2023年力扣高頻演算法面試題9樹

2021-10-07 02:27:26 字數 1101 閱讀 5342

給定乙個二叉搜尋樹,編寫乙個函式 kthsmallest 來查詢其中第 k個最小的元素。

假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。

高階:如果二叉搜尋樹經常被修改(插入/刪除操作)並且你需要頻繁地查詢第 k 小的值,你將如何優化 kthsmallest 函式?

解題思路:利用find記錄是否找到結果,來提前終止遍歷過程, 。

為了解決這個問題,可以使用 bst 的特性:bst 的中序遍歷是公升序序列。

class solution 

dfs(root->right, find, i, k);

}int kthsmallest(treenode* root, int k)

};

補充:

給定乙個二叉樹和乙個目標和,判斷該樹中是否存在根節點到葉子節點的路徑,這條路徑上所有節點值相加等於目標和。

解答:最直接的方法就是利用遞迴,遍歷整棵樹:如果當前節點不是葉子,對它的所有孩子節點,遞迴呼叫 haspathsum 函式,其中 sum 值減去當前節點的權值;如果當前節點是葉子,檢查 sum 值是否為 0,也就是是否找到了給定的目標和。

};

翻轉一棵二叉樹。

方法一:遞迴

2023年力扣高頻演算法面試題4動態規劃

給定長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。說明 請不要使用除法,且在 o n 時間複雜度內完成此題。分析 對於某乙個數字,如果我們知道其前面所有數字的乘積,同時也知道後面所有的數乘...

2023年力扣高頻演算法面試題6鍊錶

之前在csdn寫過一篇 鍊錶與快慢指標 的筆記 判斷鍊錶是否有環 找到環的入口 反轉鍊錶 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只被給定要求被刪除的節點。分析 之前有同學去哈深面試也問過類似的問題。沒有給我們鍊錶的起點,只給我們了乙個要刪的節點,跟我們以前遇到的情況不太一樣...

2023年力扣高頻演算法面試題1數學 位運算

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。要求 線性時間複雜度 不使用額外空間 解答 典型的位運算,相同的兩個數異或為0,擴充套件形式為,找出給定非空整數陣列中只出現一次的兩個整數。int singlenumber vector nums ...