数据结构实验四之二叉树的实现

本文介绍了一种使用C++实现二叉树的方法,并提供了前序、中序、后序及层序遍历的具体代码。通过递归方式创建二叉树结构,并实现了不同类型的遍历以展示树形结构的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源代码:

#include<iostream.h>

const int QSize=100;

struct BiNode

{

char data;

BiNode *lchild,*rchild;

};

class BiTree

{

BiNode*root;//指向根结点的头指针

BiNode*Creat(BiNode *bt);//构造函数,建立一棵二叉树

void Release(BiNode *bt);//析构函数

void PreOrder(BiNode *bt);//前序遍历

void InOrder(BiNode *bt);//中序遍历

void PostOrder(BiNode*bt);//后序遍历

public:

BiTree(){root=Creat(root);}

~BiTree(){Release(root);}

void PreOrder(){PreOrder(root);}

void InOrder(){InOrder(root);}

void PostOrder(){PostOrder(root);}

void LeverOrder();//层序遍历,用顺序队列来实现操作

};

BiNode *BiTree::Creat(BiNode *bt)

{

char ch;

cin>>ch;

if(ch=='#')return NULL;

else

{

bt=new BiNode;

bt->data=ch;

bt->lchild=Creat(bt->lchild);

bt->rchild=Creat(bt->rchild);

}

return bt;

}

void BiTree::Release(BiNode *bt)

{

if(bt!=NULL)

{

Release(bt->lchild);

Release(bt->rchild);

delete bt;

}

}

void BiTree::PreOrder(BiNode *bt)

{

if(bt==NULL)return;

else

{

cout<<bt->data<<" ";

PreOrder(bt->lchild);

PreOrder(bt->rchild);

}

}

void BiTree::InOrder(BiNode *bt)

{

if(bt==NULL)return;

else

{

InOrder(bt->lchild);

cout<<bt->data<<" ";

InOrder(bt->rchild);

}

}

void BiTree::PostOrder(BiNode *bt)

{

if(bt==NULL)return;

else

{

PostOrder(bt->lchild);

PostOrder(bt->rchild);

cout<<bt->data<<" ";

}

}

void BiTree::LeverOrder()

{

BiNode *q,*Q[QSize];

int front=-1,rear=-1;

if(root==NULL)return;

Q[++rear]=root;

while(front!=rear)

{

q=Q[++front];

cout<<q->data<<" ";

if(q->lchild!=NULL) Q[++rear]=q->lchild;

if(q->rchild!=NULL) Q[++rear]=q->rchild;

}

}

int main()

{

cout<<"请输入创建一棵二叉树的结点数据:"<<endl;

BiTree T;

cout<<"前序遍历"<<endl;

T.PreOrder();

cout<<endl;

cout<<"中序遍历"<<endl;

T.InOrder();

cout<<endl;

cout<<"后序遍历"<<endl;

T.PostOrder();

cout<<endl;

cout<<"层序遍历"<<endl;

T.LeverOrder();

cout<<endl;

return 0;

}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值