二叉搜尋樹的和

2022-09-09 20:45:23 字數 949 閱讀 6333

653. 兩數之和 iv - 輸入 bst

難度簡單170

給定乙個二叉搜尋樹和乙個目標結果,如果 bst 中存在兩個元素且它們的和等於給定的目標結果,則返回 true。

案例 1:

輸入: 

5/ \

3 6

/ \ \

2 4 7

target = 9

輸出: true

案例 2:

輸入: 

5/ \

3 6

/ \ \

2 4 7

target = 28

輸出: false

做題思路:先中序遍歷二叉搜尋樹,然後在二叉搜尋樹中找到k-x且不等於x的值。

方法一:使用 hashset【通過】

最簡單的方法就是遍歷整棵樹,找出所有可能的組合,判斷是否存在和為 kk 的一對節點。現在在此基礎上做一些改進。

如果存在兩個元素之和為 kk,即 x+y=kx+y=k,並且已知 xx 是樹上乙個節點的值,則只需判斷樹上是否存在乙個值為 yy 的節點,使得 y=k-xy=k−x。基於這種思想,在樹的每個節點上遍歷它的兩棵子樹(左子樹和右子樹),尋找另外乙個匹配的數。在遍歷過程中,將每個節點的值都放到乙個 setset 中。

對於每個值為 pp 的節點,在 setset 中檢查是否存在 k-pk−p。如果存在,那麼可以在該樹上找到兩個節點的和為 kk;否則,將 pp 放入到 setset 中。

如果遍歷完整棵樹都沒有找到一對節點和為 kk,那麼該樹上不存在兩個和為 kk 的節點。

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

二叉搜尋樹 二叉搜尋樹的刪除操作

如圖刪除 7,4,2直接刪除接可以 如圖 刪除6把7拉上去 如圖 刪除3 4沒有左孩子直接返回4 所以最後的結果只是4覆蓋3 上 class solution if key root.val else if key root.val else else if root.right null else...