|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
//二叉树遍历(递归)
#include<iostream.h>
struct node
{
char data;
node *left;
node *right;
};
class tree
{
public:
tree();
void Create(node*);
void Delete(node*);
void Q(node*);
void Z(node*);
void H(node*);
~tree();
private:
static node *root;
};
node* tree::root=0;
tree::tree()
{
cout<<"输入树的根节点(如果为空输入#):\t";
root=new node;
cin>>root->data;
Create(root);
}
void tree::Create(node *p)
{
if(p)
{
char x,y; node *q;
cout<<"输入节点"<<p->data<<"的左孩子和右孩子:\t";
cin>>x>>y;
if(x==';#';)
p->left=0;
else
{
q=new node;
q->data=x;
p->left=q;
}
if(y==';#';)
p->right=0;
else
{
q=new node;
q->data=y;
p->right=q;
}
Create(p->left);
Create(p->right);
}
}
void tree: (node *p=root)
{
if(p)
{
cout<<p->data<<'; ';;
Q(p->left);
Q(p->right);
}
}
void tree::Z(node *p=root)
{
if(p)
{
Z(p->left);
cout<<p->data<<'; ';;
Z(p->right);
}
}
void tree::H(node *p=root)
{
if(p)
{
H(p->left);
H(p->right);
cout<<p->data<<'; ';;
}
}
tree::~tree()
{
Delete(root);
}
void tree: elete(node *p)
{
if(p)
{
Delete(p->left);
Delete(p->right);
delete p;
}
}
void main()
{
tree h;
cout<<"树的前序遍历:";
h.Q();
cout<<"\n树的中序遍历:";
h.Z();
cout<<"\n树的后序遍历:";
h.H();
} |
|