二叉搜尋樹

2022-09-02 17:48:08 字數 1075 閱讀 8729

演算法導論筆記:

每個節點儲存的資料:key,衛星資料,left,right,p //左孩子,右孩子,父節點

struct

nod;

中序遍歷得到所有關鍵字的按序輸出:

void

inorder_tree_walk(nod* x)

}

查詢

遞迴:

nod * tree_search(nod *x,int

k)

迭代:

nod * tree_search(nod *x,int

k)else

}return

x;}

最小關鍵字

nod * tree_min(nod*x)

return

x;}

最大關鍵字

nod * tree_max(nod*x)

return

x;}

後繼

nod *tree_successor(x)

return

y;}

前驅

nod *tree_predecessor(x)

插入

void tree_insert(nod*root,nod *x)

else x=x->right;

}z->p=y;

if(y==null);

else

if(z->keykey)y->left=z;

else y->right=z;

}

刪除

二叉搜尋樹 二叉搜尋樹

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