找回密码
 注册
查看: 2802|回复: 4

二叉树遍历的完整程序

[复制链接]
发表于 2005-10-12 19:52:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
//二叉树遍历(递归)
&#35;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<<"输入树的根节点(如果为空输入&#35;):\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==';&#35;';)
   p->left=0;
  else
  {
   q=new node;
   q->data=x;
   p->left=q;
  }
  if(y==';&#35;';)
   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();
}
发表于 2005-10-14 21:19:28 | 显示全部楼层

二叉树遍历的完整程序

谢谢,先下了再说
发表于 2005-11-5 22:16:27 | 显示全部楼层

二叉树遍历的完整程序

谢谢了!
发表于 2005-11-17 11:59:33 | 显示全部楼层

二叉树遍历的完整程序

谢谢
发表于 2005-11-19 20:59:08 | 显示全部楼层

二叉树遍历的完整程序

3q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表