二叉搜尋樹

2021-08-10 12:17:21 字數 1117 閱讀 3608

二叉搜尋樹(bst),也叫二叉排序樹、二叉查詢樹:

1. 非空左子樹的所有鍵值小於其根結點的鍵值。

2. 非空右子樹的所有鍵值大於其根結點的鍵值。

3. 左右子樹都是二叉搜尋樹。

// 查詢x,返回該結點

// 遞迴

treenode *find(elementtype x, treenode *bst)

// 非遞迴

treenode *iterfind(elementtype x, treenode *bst)

return

null;

}

// 查詢最小值,返回該結點

// 遞迴

treenode *findmin(treenode *bst)

// 非遞迴

treenode *findmin(treenode *bst)

//查詢最大值,返回該結點

//遞迴

treenode *findmax(treenode *bst)

treenode *findmax(treenode *bst)

treenode *insert(elementtype x, treenode *bst) //插入x,返回該結點

else

if(x < bst->

data)

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

else

if(x > bst->

data)

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

return bst;

}

//刪除x,返回root。

//當刪除的節點有左右子樹時,可以選擇左子樹最大點或右子樹最小點代替它,下面採用右子樹最小點代替

treenode *delete(elementtype x, treenode *bst)

else

free(tmp);

}return bst;

}

二叉搜尋樹 二叉搜尋樹

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