/* BinarySearchTree.h -- 二叉搜尋樹標頭檔 */</p><p>/* 資料類型定義 */</p><p>typedef int Item ;<br />typedef struct node<br />{<br /> Item item ;<br /> struct node * left ;<br /> struct node * right ;<br />} Node ;<br />typedef Node * Position ;<br />typedef Node * Tree ;</p><p>/* 介面函式宣告 */</p><p>/* 操作: 將二叉搜尋樹初始為空白 */<br />/* 操作前: ptree 指向一棵二叉搜尋樹 */<br />/* 操作後: 該樹被初始化為空白 */<br />void InitializeTree (Tree * ptree) ;</p><p>/* 操作: 確定二叉搜尋樹是否為空白 */<br />/* 操作前: tree 是一棵已初始化的二叉搜尋樹 */<br />/* 操作後: 如果該樹為空白, 返回1; 否則返回0 */<br />int TreeIsEmpty (const Tree tree) ;</p><p>/* 操作: 返回二叉搜尋樹中具有指定資料的結點的位置 */<br />/* 操作前: tree 是一棵已初始化的二叉搜尋樹, item 是被尋找的資料 */<br />/* 操作後: 如果可能, 返回具有 item 資料的結點在樹中的位置; 否則返回NULL */<br />Position Find (const Tree tree, const Item item) ;</p><p>/* 操作: 返回樹中的最小資料結點的位置 */<br />/* 操作前: tree 是一棵已初始化的二叉搜尋樹 */<br />/* 操作後: 如果可能, 返回該樹中最小資料結點的位置; 否則返回NULL */<br />Position FindMin (const Tree tree) ;</p><p>/* 操作: 返回樹中的最大資料結點的位置 */<br />/* 操作前: tree 是一棵已初始化的二叉搜尋樹 */<br />/* 操作後: 如果可能, 返回該樹中最小資料結點的位置; 否則返回NULL */<br />Position FindMax (const Tree tree) ;</p><p>/* 操作: 向二叉搜尋樹中插入一個結點 */<br />/* 操作前: tree 是一棵已初始化的二叉搜尋樹, item 是被添加到結點的資料 */<br />/* 操作後: 如果可能, 一個具有 item 資料的結點被添加到樹中, 返回根結點的位置; 否則返回NULL */<br />Tree Insert (Tree tree, const Item item) ;</p><p>/* 操作: 中序遍曆二叉搜尋樹中的所有結點 */<br />/* 操作前: tree 是一棵已初始化的二叉搜尋樹, pfun 指向一個沒有傳回值, 接受一個Item型別參數的函數 */<br />/* 操作後: 函數 pfun 以中序遍曆作用到樹中所有結點資料 */<br />void InorderTraversal (const Tree tree, void (* pfun) (const Item item)) ;</p><p>/* 操作: 刪除二叉搜尋樹中舉有指定資料的一個結點 */<br />/* 操作前: tree 是一棵已初始化的二叉搜尋樹, item 是指定的資料 */<br />/* 操作後: 如果可能, 具有 item 資料的結點被從該樹中刪除, 返回最初接受的結點的指標(通常用法是傳遞樹的根節點指標,於是這麼做得到一顆新樹);<br /> 否則不改變原樹, 返回傳入的結點的指標 */<br />Tree Delete (Tree tree, const Item item) ;</p><p>/* 操作: 清空一棵二叉搜尋樹 */<br />/* 操作前: tree 是一棵已初始化的二叉搜尋樹 */<br />/* 操作後: 該樹被置為為空白樹 */<br />void EmptyTheTree (Tree tree) ;<br />