二叉树的遍历(递归方法)

#include <iostream>
#include <stdlib.h>
using namespace std;

typedef struct np{
int date;
struct np *left,*right;
} node;
node *create(void)
{
return ((node*)malloc(sizeof(node)));
}
node *t(node *a,int d)/*建立二叉树*/
{
if (a==NULL) {
a=create();
a->left =a->right =NULL;
a->date=d;
}
else if (d>=a->date) {
a->right =t(a->right,d);
}
else if (d<a->date) {
a->left =t(a->left ,d);
}
return a;
}
void prt(node *r)
{
if(r) {
cout<<r->date<<" ";
prt(r->left );
prt(r->right );
}
}
void mid(node *r)
{
if(r)
{
mid(r->left);
cout<<r->date<<" ";
mid(r->right);
}
}
void beh(node *r)
{
if(r)
{
beh(r->left);
beh(r->right);
cout<<r->date<<" ";
}
}

int main(void)
{
node *bst=NULL;
int i;

cout<<"从键盘输入整数,以-24结束输入:";
while (scanf("%d",&i),i!=-24)
{
bst=t(bst,i); /*生成二叉排序数*/
}
cout<<"前序遍历:";
prt(bst);
cout<<endl;
cout<<"中序遍历:";
mid(bst);
cout<<endl;
cout<<"后序遍历:";
beh(bst);
cout<<endl;
system("pause");
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值