二叉排序樹的實現

2022-08-22 12:48:09 字數 1379 閱讀 8843

if (t為空 || t的值等於key)返回t

if (t的值 > key)search(t->lchid, key)

if (t的值 < key)search(t->rchid, key)

void search(bitree t, char key)
if (t為空) 

if (t == key)返回t

if (t->data > key)insertbst(t->lchild,key)

if (t->data < key)insertbst(t->rchild,key)

int insertbst(bitree& t, char key) 

if (t->data == key)return 0;

if (t->data > key)return insertbst(t->lchild, key);

if (t->data < key)return insertbst(t->rchild, key);

}

初始化樹t

while (i < n)

返回t

bitnode *creatbst(int a, int n) 

if(bt為空)返回0

else

}

int deletebst(bitnode*& bt, char k) }}

建立乙個節點q

if (p的右孩子為空)

else if (p的左孩子為空)

當p節點的左右孩子都存在時引用delete1函式

void delete(bitnode*& p) 

else if (p->lchild == null)

else delete1(p, p->lchild);

}

建立節點q

if(刪除節點的左子樹的右子樹不為空)遞迴delete1找到被刪除節點的左子樹 的最右下節點

else

void delete1(bitnode* p, bitnode*& r) 

else

}

二叉排序樹的實現

二叉排序樹是一顆特殊的二叉樹 對於樹上的任意乙個結點,根節點的值一定大於其左子樹上的任意結點的值,一定小於其右子樹上任意結點的數值。所以我們可以插入實現二叉排序樹,思路可以這樣 1 若當前樹為空,則x為根節點 2 如果樹不為空,比較根節點與之大小,若插入值小於根節點,就繼續比較跟節點的左子樹,即最終...

二叉排序樹的實現

二叉排序 搜尋 樹是以關鍵碼為結點的二叉樹,其性質 如果任一結點的左子樹非空,則左子樹的所有結點的關鍵碼都小於根結點的關鍵碼 如果任一結點的右子樹非空,則右子樹的所有結點的關鍵碼都大於根結點的關鍵碼。二叉排序樹的儲存結構如下,typedef struct binsortnode pbinsortno...

二叉排序樹的實現

包括二叉排序樹的增加 遍歷和刪除 include include typedef int mytype 二叉排序樹 typedef struct structtreebtree btree init void addchild btree tree,int num void printtree bt...