程式設計實現二叉排序樹的建立、插入、刪除和查詢
對於給定的這組數在二叉排序樹上進行查詢,給出兩種情況下的查詢成功和不成功時的asl
//bst
#include
using
namespace std;
const
int maxn =
1e5;
typedef
struct node
bsnode,
*bstree;
intsearch_bst
(bstree t,
int key, bstree f, bstree *p)
else
if(key == t-
>data)
else
if(key < t-
>data)
else
}int
insert_bst
(bstree *t,
int key)
return
false;}
intdelete
(bstree *p)
elseif(
(*p)
->lchild ==
null
)else
(*p)
->data = s-
>data;
if(q !=
*p) q-
>rchild = s-
>lchild;
else
q->lchild = s-
>lchild;
free
(s);
}return
true;}
intdelete_bst
(bstree *t,
int key)
else
if(key <
(*t)
->data)
else}}
void
create_bst
(bstree *t,
int a,
int n)
void
output_bst
(bstree t)
output_bst
(t->lchild)
; cout << t-
>data <<
" ";
output_bst
(t->rchild);}
bool
bfs(bstree &t,
int key)
return0;
}int num=0;
intnumber
(bstree &t)
return num;
}double
asl(bstree &t,
int key)
if(p-
>rchild !=
null)}
return
(res*
1.0)
/(num*
1.0);}
else
//不能成功查詢
if(p-
>rchild !=
null)if
((p-
>lchild ==
null
&& p-
>rchild !=
null)||
(p->lchild !=
null
&& p-
>rchild ==
null))
if(p-
>lchild ==
null
&& p-
>rchild ==
null)}
return
(res*
1.0)
/(num*
1.0);}
}int
main()
//刪除 x=88
cout <<
"which number to delete: "
; cin >> x;
delete_bst
(&t, x)
; cout << endl;
//輸出
cout <<
"the output sequence is:"
<< endl;
output_bst
(t);
cout << endl;
//輸出查詢的asl
int key;
cout<<
"please enter a band to find the element : "
; cin>>key;
cout<<
asl(t,key)
("pause");
return0;
}
資料結構 二叉排序樹(BST)
基本介紹 示例 public class binarysorttreedemo int arr binarysorttree binarysorttree newbinarysorttree for int item arr binarysorttree.infixorder node node b...
資料結構 二叉排序樹BST初探
首先給出二叉排序樹 binary sort tree 的定義 一棵二叉排序樹或者是一棵空樹或者滿足以下條件 1 若它的左子樹不為空,則左子樹所有節點的值均小於根的值 2 若它的右子樹不為空,則右子樹所有節點的值均大於根的值 3 左右子樹本身又分別是二叉排序樹 如下圖就是乙個二叉排序樹 繪畫水平真的就...
資料結構與演算法 二叉排序樹 BST
二叉排序樹 bst binary sort search tree 對於二叉排序樹的任何乙個非葉子節點,要求左子節點的值比當前節點的值小,右子節點的值比當前節點的值大。特別說明 如果有相同的值,可以將該節點放在左子節點或右子節點。比如針對資料 7,3,10,12,5,1,9 對應的二叉排序樹為 二叉...