二叉搜尋樹

2021-08-08 17:34:24 字數 1586 閱讀 7902

定義:或是空樹或是滿足如下性質的樹。

(1) 若它的左子樹非空,則左子樹上所有元素的值均小於根元素的值

(2) 若它的右子樹非空,則右子樹上所有元素的值均大於根元素的值

(3) 左右字數本身又各是一顆平衡二叉樹

查詢從根結點開始,如果

樹為空,返回

null

(2) 

若搜尋樹非空,則根結點

關鍵字和

x進行比較

, 並進行不同處理:

1.  若

x小於根結點鍵值

,只需在

左子樹2. 如果x

大於根結點的鍵值

, 在右子樹

3. 若兩者比較結果是

相等,搜尋完成,返回指向此結點的指標。

position find( elementtype x, bintree bst )

position iterfind( elementtype x, bintree bst )

return null;}

最大元素

一定是在樹的

最右分枝的端結點

上最小元素

一定是在樹的

最左分枝的端結點

position findmin( bintree bst )

position findmax( bintree bst )

關鍵是要找到元素應該插入的

位置 , 

可以採用與

find

類似的方法 。

bintree insert( elementtype x, bintree bst )

else /*開始找要插入元素的位置*/

if( x < bst->data )

bst->left = insert( x, bst->left);

/*遞迴插入左子樹*/

else if( x > bst->data )

bst->right = insert( x, bst->right);

/*遞迴插入右子樹*/

/* else x已經存在, 什麼都不做 */

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 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 解釋 輸入為 ...