定義:二叉搜尋樹又叫二叉排序樹或二叉查詢樹,它是一棵空樹或者是具有以下性質的樹:
1.節點的左子樹只包含小於當前節點的數。
2.節點的右子樹只包含大於當前節點的數。
3.所有左子樹和右子樹自身必須也是二叉搜尋樹。
二叉搜尋樹的中序遍歷是有序的。
二叉樹結構體:
struct node
};
查詢操作:
node*
searchbst
(node *root,
int key, node *f)
//root為當前節點,key為鍵值,f為當前節點的前繼,初始為null
if(root-
>data == key)
else
if(root-
>data > key)
else
}
插入操作:
node*
insertbst
(node *root,
int key)
else
if(key < p-
>data)
else
if(key > p-
>data)
return root;
}
刪除操作:
刪除分為幾種情況:
1.葉子節點。
2.僅有左子樹或右子樹的節點。
3.既有左子樹又有右子樹的節點。
對於第一種情況,只需刪除該節點然後將雙親節點對應指向置空。第二種情況將該節點用對應的左孩子或有孩子代替。第三種情況,應找到該節點中序遍歷的前繼或者後繼,並用其替代。
void
delete
(node *p, node *f)
//p為當前節點,f為p的前繼
else
if(p-
>left &&
!p->right)
elseif(
!p->left && p-
>right)
else
p->data = s-
>data;
if(p != q)
else
delete s;}}
void
deletebst
(node *root, node *f,
int key)
//和查詢差不多
else
if(key < root-
>data)
else
}}
二叉搜尋樹的插入,查詢,刪除
include using namespace std template class node 預設析構函式 templatenode node template node node t value template class bstree 預設析構 void buildbstree 建立二叉樹 ...
二叉搜尋樹的查詢 插入 刪除
coding utf 8 time 2020 9 23 15 56 author julyli file bst.py class bitreenode def init self,data self.data data self.lchild none self.rchild none self....
二叉搜尋樹的插入 刪除 查詢
1 若左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 2 若右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 3 左 右子樹也分別為二叉排序樹 4 沒有鍵值相等的節點 插入的資料之後要滿足二叉樹的性質1和2,所以要先找到插入位置,且插入的位置一定是在葉子節點的下面 所以插入分兩個步驟 ...