二叉排序樹的相關操作

2021-09-30 12:52:00 字數 1249 閱讀 6096

二叉排序樹

定義:1)若它的左子樹非空,則左子樹的所有節點都小於它的根節點;

2)若它的右子樹非空,則右子樹的所有節點都小於它的根節點;

3)它的左右字數也分別為二叉排序樹。

二叉排序樹的建立和插入節點

**實現

int bst_insert(treenode **root, int data)

else if(data < (*root)->data)

return bst_insert(&(*root)->lchild,data);

else if(data > (*root)->data)

return bst_insert(&(*root)->rchild,data);

else

return error;

}treenode *create_search_tree(int *arr, int size)

二叉排序樹的節點刪除

刪除過程要記錄刪除節點(del)的父親節點(pre),節點刪除有4種情況

1)刪除葉子節點,將父親節點指向刪除節點的指標置為null

2)刪除節點只有左子樹,父親節點指向刪除節點的指標指向刪除節點的左孩子

3)刪除節點只有右子樹,父親節點指向刪除節點的指標指向刪除節點的右孩子

4)刪除節點既有左子樹也有右子樹,刪除節點左子樹的最大節點賦值給刪除節

點,此時要刪除子樹的最大節點。

**實現

int bst_delete(treenode *root, int data)

else if(data > pos->data)

else

else if(pos->rchild == null)

else if(pos->lchild == null)

else

pos->data = del->data;//pos節點左子樹中最大節點賦值給pos節點

if(pos == parent)//pos節點左子數最大節點是子樹的根節點

pos->lchild = del->lchild;

else //parent節點的rchild指向del節點的左子樹

parent->rchild = del->lchild;

free(del);

return ok;

}} }

return error;

}

二叉排序樹相關操作(C C )

目錄 1 建立二叉樹 遞迴 2 建立二叉樹 非遞迴 3 前序遍歷 非遞迴 4 中序遍歷 非遞迴 5 後續遍歷 非遞迴 建立ordertree bitree t,int data void ordertree bitree t,int data else if data t data else if ...

二叉排序樹及相關操作說明

在講到集合的時候,很容易讓人想到的是陣列和鍊錶。然後大家會討論這兩種資料結構的差異。但是根據指定的內容在集合中查詢,這兩種資料結構的效能卻沒有區別都是o n 如何提高在集合中檢索指定內容資料的效能,是我們在程式開發中面臨的問題。左子樹不空時,左子樹上所有的結點關鍵字的值均小於根結點關鍵字的值 右子樹...

二叉排序樹的操作

二叉排序樹的建立,中序遍歷,前序遍歷,後序遍歷,計算總結點數,計算樹的深度 二叉排序樹的建立 void creattree tree t,int m if melement creattree t lchild,m else creattree t rchild,m 前序遍歷 void preord...