二叉搜尋樹(bst):簡單來講就是一棵二叉樹,左子樹上的值都小於根節點,右子樹上的值都大於根節點。所以我們可以知道一棵二叉搜尋樹的左右子樹也都是一棵二叉搜尋樹。
下面是相關操作啦:
首先,作為搜尋樹,肯定要能搜尋啊,所以我們有二叉搜尋樹的查詢演算法:
bintree find( elementtype x, bintree bst )
上面這個函式說,我首先有個二叉搜尋樹bst和我要找的x,我要找x,先判斷bst他存不存在,如果存在就從bst的根開始比較,如果比根大就往根的右邊找,不然就往根的左邊找,如果找到了就返回這個節點,沒找到就返回null。
當然,我們也有這個函式的非遞迴版本:
bintree find( elementtype x, bintree bst )
}
接著就是插入操作了,插入和find類似,相當於多了乙個插入節點的操作:
bintree insert( elementtype x, bintree bst ) else
return bst;
}
這段程式的關鍵是else中的兩個if語句,插入的節點要和他的父節點連上。
至於刪除操作的過程其實和插入是差不多的,我們就下次再說把- -
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 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 ...
樹 二叉樹 二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...