---------------------學會編輯**--------------------------------
#include #include //二叉查詢樹結點描述
typedef int keytype;
typedef struct node
node,*pnode;
//往二叉查詢樹中插入結點
//插入的話,可能要改變根結點的位址,所以傳的是二級指標
void inseart(pnode * root,keytype key)
//插入到當前結點(*root)的左孩子
if((*root)->left == null && (*root)->key > key)
//插入到當前結點(*root)的右孩子
if((*root)->right == null && (*root)->key < key)
if((*root)->key > key)
inseart(&(*root)->left,key);
else if((*root)->key < key)
inseart(&(*root)->right,key);
else
return;
}
//查詢元素,找到返回關鍵字的結點指標,沒找到返回null
pnode search(pnode root,keytype key)
//查詢最小關鍵字,空樹時返回null
pnode searchmin(pnode root)
//查詢最大關鍵字,空樹時返回null
pnode searchmax(pnode root)
//查詢某個結點的前驅
pnode searchpredecessor(pnode p)
return p->parent;
} }
//查詢某個結點的後繼
pnode searchsuccessor(pnode p)
return p->parent;
} }
//根據關鍵字刪除某個結點,刪除成功返回1,否則返回0
//如果把根結點刪掉,那麼要改變根結點的位址,所以傳二級指標
int deletenode(pnode* root,keytype key)
else
} //2.被刪結點只有左子樹
else if(p->left && !(p->right))
//3.被刪結點只有右孩子
else if(p->right && !(p->left))
//4.被刪除的結點既有左孩子,又有右孩子
//該結點的後繼結點肯定無左子樹(參考上面查詢後繼結點函式)
//刪掉後繼結點,後繼結點的值代替該結點
else
return 1;
}
//建立一棵二叉查詢樹
void create(pnode* root,keytype *keyarray,int length)
二叉排序樹實現(C語言)
include include 定義基本的資料結構和型別預定義 struct treenode typedef struct treenode position typedef struct treenode searchtree typedef int elementtype struct tre...
建立二叉排序樹
建立二叉排序樹 1 建立二叉排序樹,二叉樹排序樹有個特點,如果結點值大於根,則在右子樹去查詢插入位置,如果小於樹根,在左子樹去查詢樹根,如果相等,不作任何操作 2 根據上面的特性,需要兩個結點,分別是當前結點和父節點 3 先遍歷二叉樹節點,找到要插入的位置,根據父節點的指向要插入的位置 實現過程如下...
C 實現二叉排序樹
include using namespace std class btreenode 二叉樹的結點類 二叉樹類 class btree 二叉樹類 void build void insert int d,btreenode r,btreenode p else else if d r data e...