建立二叉排序樹C語言實現

2021-09-30 11:22:55 字數 1656 閱讀 9299

---------------------學會編輯**--------------------------------
#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...