定義:或是空樹或是滿足如下性質的樹。
(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 解釋 輸入為 ...