二叉排序樹的操作和ASL

2021-10-12 16:31:22 字數 2293 閱讀 2591

#include 

#include

#include

using namespace std;

typedef struct bstnode

bstnode,*

bstree

;void

charu

(bstree&t

,int e)

else

if(e<

t->data)

charu(t

->lchild,e)

;else

if(e>

t->data)

charu(t

->rchild,e);}

void

chuangjian

(bstree&t

)}void

zhongxvbianli

(bstreet)

}void

chazhao

(bstreet)

if(p->data>key) p=p->lchild;

else p=p->rchild;}if

(!p) cout<<

"該數不存在"

void

shanchu

(bstree&t

)if(!p)

return

; q=p;if(

(p->lchild)

&&(p->rchild)

) p->data=s->data;

if(q!=p) q->rchild=s->lchild;

else q->lchild=s->lchild;

delete s;

return;}

elseif(

!p->rchild)

elseif(

!p->lchild)if(

!f)t

=p;else

if(q==f->lchild) f->lchild=p;

else f->rchild=p;

delete q;

}int

asl(

bstreet)

,fu[10]

=,i=

1,flag=

1,r[10]

=;;if

(t==null)

return0;

a.push(t

);while

(!a.

empty()

)if(p->lchild!=null||p->rchild!=null)

//一層結束,父節點佇列出隊

//左節點不為空,右節點為空, 且p等於左節點if(

(parent.

front()

->lchild != null&&parent.

front()

->rchild == null)

&& p == parent.

front()

->lchild)

//右節點不為空,左節點為空, 且p等於右節點

elseif(

(parent.

front()

->rchild != null&& parent.

front()

->lchild == null)

&& p == parent.

front()

->rchild)

//右節點不為空,左節點為空, 且p等於右節點

else

if(p == parent.

front()

->rchild)

}int s=

0,z=

0,t=0;

for(

int j=

0;j<=i;j++

)printf

("查詢成功時的平均檢索長度(asl)=");

cout<'/'

("查詢失敗時的平均檢索長度(asl)=");

cout<'/'<}int

main()

if(p==2)

return0;

}}if(e==2)

if(p==2)

return0;

}}if(e==3)

if(p==2)

return0;

}}if(e==4)

if(p==2)

return0;

}}if(e==5)

return0;

}}

二叉排序樹的操作

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

二叉排序樹基本操作

1.儲存結構 二叉鍊錶 include include typedef struct bitnode bitnode,bitree 2.二叉排序樹查詢演算法 遞迴查詢二叉排序樹t中是否存在key status search bitree t,int key,bitree f,bitree p p指向...

二叉排序樹各項操作

二叉排序樹的各項操作 include include define max20 typedef int datatype typedef struct bi search tree bst tree 插入操作,value是待插入的值 bst tree bst insert bst tree root...