| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 744 人关注过本帖
标题:二差树的简单应用
收藏  订阅  推荐  打印 
appleflower
Rank: 1
等级:新手上路
帖子:12
积分:110
注册:2007-12-9
二差树的简单应用

#include<iostream.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T)
{
char ch;
cin>>ch;
if(ch=='0')
  (*T)=NULL;
else
{
  (*T)=new BiTNode;
  (*T)->data =ch;
  CreateBiTree(&(*T)->lchild );
  CreateBiTree(&(*T)->rchild );
}
}
void InOrderOut(BiTree T)
{//中序遍历二叉树T
if(T)
{
  InOrderOut(T->lchild );
  cout<<T->data <<" ";
  InOrderOut(T->rchild );
}
}
void PreOrderOut(BiTree T)
{//先序遍历二叉树T
if(T)
{
  cout<<T->data <<" ";
  PreOrderOut(T->lchild );
  PreOrderOut(T->rchild );
}
}
void PostOrderOut(BiTree T)
{//后序遍历二叉树T
if(T)
{
  PostOrderOut(T->lchild );
  PostOrderOut(T->rchild );
  cout<<T->data <<" ";
}
}
void LevelOrderOut(BiTree T)
{//层次遍历二叉树T
BiTree Queue[100];
int front ,rear;
if(T == NULL)
  return ;//空二叉树,返回
front=-1;
rear=0;
Queue[rear]=T;//根结点入队
while (front!=rear)
{
  front++;
  cout<<Queue[front]->data<<" ";//访问队首结点的数值域
  if(Queue[front]->lchild!=NULL)//将队首结点的左孩子节点入队列
  {
   rear++;
   Queue[rear]=Queue[front]->lchild;
  }
  if(Queue[front]->rchild!=NULL)//将队首结点的右孩子节点入队列
  {
   rear++;
   Queue[rear]=Queue[front]->rchild;
  }
}
}
BiTree Swap(BiTree bt)
{
BiTree t,t1,t2;
if(bt==NULL)
  t=NULL;
else
{
  t=new BiTNode;
  t->data=bt->data;
  t1=Swap(bt->lchild);
  t2=Swap(bt->rchild);
  t->lchild=t2;
  t->rchild=t1;
}
return t;
}
void main()
{
BiTree bt,t;
cout<<"\t\t   请按中序输入要建立的二叉树,为空时输入0: "<<endl;
CreateBiTree(&bt);
cout<<"先序遍历如下:"<<endl;
PreOrderOut(bt);
cout<<endl;
cout<<"中序遍历如下:"<<endl;
InOrderOut(bt);
cout<<endl;
cout<<"后序遍历如下:"<<endl;
PostOrderOut(bt);
cout<<endl;
cout<<"按层遍历如下:"<<endl;
LevelOrderOut(bt);
cout<<endl;
t=Swap(bt);
cout<<"交换后先序遍历如下:"<<endl;
PreOrderOut(t);
cout<<endl;
cout<<"交换后中序遍历如下:"<<endl;
InOrderOut(t);
cout<<endl;
cout<<"交换后后序遍历如下:"<<endl;
PostOrderOut(t);
cout<<endl;
cout<<"交换后按层遍历如下:"<<endl;
LevelOrderOut(t);
cout<<endl;
}
搜索更多相关主题的帖子: 二叉树  void  BiTNode  BiTree  应用  
2007-12-9 12:01
conish
Rank: 1
等级:新手上路
帖子:31
积分:414
注册:2007-11-9

我编了一个二叉树的操作比这个要详细,有很多功能。
2007-12-10 09:01
wfjt
Rank: 2
等级:注册会员
帖子:99
积分:1112
注册:2007-11-30

那可以把代码给兄弟看看吗

jtbnu@tom.com

谢谢你
2007-12-10 10:17
瑶瑶yaoyao
Rank: 1
等级:新手上路
帖子:2
积分:216
注册:2008-12-16
huhu

以下是引用appleflower在2007-12-9 12:01的发言:

#include<iostream.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T)
{
char ch;
cin>>ch;
if(ch=='0')
  (*T)=NULL;
e ...
有个功能更多的的那位
楼主,我们共享下,行不啊?
2008-12-16 21:22
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.115504 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved