二叉树相关算法实现Word下载.docx
- 文档编号:19928392
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:8
- 大小:15.73KB
二叉树相关算法实现Word下载.docx
《二叉树相关算法实现Word下载.docx》由会员分享,可在线阅读,更多相关《二叉树相关算法实现Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
//创建二叉树//
intc;
1:
读取stop"
2:
查找指定数据"
3:
先根遍历"
4:
中根遍历"
5:
后根遍历"
6:
读取根节点"
7:
删除子树"
8:
叶节点个数:
endl<
choose:
"
;
cin>
>
c;
*add;
while(c!
=-2){
switch(c){
case1:
{intsstop;
stop是:
bin.getstop(sstop)<
break;
}
case2:
{intitem;
cout<
输入欲查找的节点数值:
cin>
item;
add=bin.finddata(tph,item);
tph3地址:
add<
case3:
{cout<
bin.preorder(tph);
case4:
bin.inorder(tph);
case5:
{cout<
bin.postorder(tph);
case6:
{cout<
读取根root:
bin.getroot()<
cout<
节点3的父节点是:
bin.father(tph,add)<
case7:
输入你想删除节点的数值"
intitem;
cin>
bin.deletesub(add);
case8:
{bin.countleaf(tph);
bin.print();
}
**还需要什么帮助吗?
**"
if(c==-2)cout<
谢谢使用"
return0;
.h文件部分
template<
classT>
classBintreeNode{
private:
BintreeNode<
T>
*left,*right;
Tdata;
public:
(T&
item,BintreeNode<
*lptr=NULL,BintreeNode<
*rptr=NULL):
data(item),left(lptr),right(rptr){}
*getleft(){returnleft;
*getright(){returnright;
voidsetleft(BintreeNode<
*l){left=l;
voidsetright(BintreeNode<
*r){right=r;
T&
getdata(){returndata;
voidsetdata(constT&
item){data=item;
};
template<
classBintree{
*root;
Tstop;
intn0,n1,n2;
Bintree(BintreeNode<
*t=NULL):
root(t){}
~Bintree(){del(root);
*creat();
voidcountleaf(BintreeNode<
*t);
voidprint(){
0后继节点个数:
n0<
1后继结点个数:
n1<
2后继结点个数:
n2<
}
*father(BintreeNode<
*t,BintreeNode<
*p);
*finddata(BintreeNode<
*t,Titem);
*getroot(){returnroot;
voidsetroot(BintreeNode<
*r){root=r;
T&
getstop(T&
item){item=stop;
returnitem;
voidsetstop(T&
item){stop=item;
*getleft(){returnleft;
*lptr){left=lptr;
*rptr){right=rptr;
voiddel(BintreeNode<
voiddeletesub(BintreeNode<
voidpreorder(BintreeNode<
*t);
voidinorder(BintreeNode<
*t);
voidpostorder(BintreeNode<
intisempty(){returnroot==NULL?
0;
BintreeNode<
*Bintree<
:
creat(){
*t,*t1,*t2;
n0=n1=n2=0;
Titem;
if(item==stop){t=NULL;
returnt;
else{
if((t=newBintreeNode<
(item,NULL,NULL))==NULL)returnNULL;
//注意创建时数据输入顺序//
t1=creat();
t->
setleft(t1);
t2=creat();
setright(t2);
returnt;
father(BintreeNode<
*p){
*q;
if(t==NULL||p==NULL)returnNULL;
if(t->
getleft()==p||t->
getright()==p)returnt;
if((q=father(t->
getleft(),p))!
=NULL)returnq;
elsereturnfather(t->
getright(),p);
finddata(BintreeNode<
*t,Titem){
*p,*q;
if(t==NULL){cout<
t为空"
returnNULL;
getdata()==item){cout<
已找到!
returnt;
if((p=finddata(t->
getleft(),item))!
=NULL)returnp;
else{q=finddata(t->
getright(),item);
returnq;
voidBintree<
del(BintreeNode<
*t){
if(t==NULL)return;
if(t!
=NULL){
del(t->
getleft());
getright());
deletet;
deletesub(BintreeNode<
return;
if(t==root){
del(t);
root=NULL;
所删除为根节点"
return;
*p,*q;
p=t;
q=father(root,p);
if(q){
if(q->
getleft()==p)q->
setleft(NULL);
getright()==p)q->
setright(NULL);
所删除为子树"
del(p);
preorder(BintreeNode<
*t){
t->
getdata()<
preorder(t->
inorder(BintreeNode<
inorder(t->
postorder(BintreeNode<
postorder(t->
countleaf(BintreeNode<
getleft()==NULL&
&
getright()==NULL)n0++;
if((t->
getleft()!
=NULL&
getright()==NULL)||(t->
getright()!
=NULL))n1++;
=NULL)n2++;
countleaf(t->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 相关 算法 实现