2013=12=2 bitree
#include "stdio.h"
#include "stdlib.h" #define OVERFLOW -1
#define ERROR -1
#define OK 1 typedef char Elemtype;
typedef int Status;
typedef struct BitNode
{
Elemtype data;
struct BitNode *lchild,*rchild;
}bitnode ,*Bitree; int postion(Elemtype ch,Elemtype a[],int start,int end)
{
int i;
for(i=start;i<=end;i++)
if (a[i]==ch)
return i;
} Status creatbitree_TWOorder(Bitree &t,Elemtype preorder[],int startpre,int endpre, Elemtype inorder[],int startin ,int endin)
{
int pos,left,right;
if (endpre-startpre!=endin-startin)
return ERROR;
if(endpre-startpre<0)
t=NULL;
else
{
pos=postion(preorder[startpre],inorder,startin,endin);
left=pos-startin;
right=endin-pos;
printf("char=%c,pos=%d,left=%d,right=%d,--pre --- %d, %d --- in--- %d ,%d\n",preorder[startpre],pos,left,right,startpre,endpre,startin,endin);
//getchar(); if(!(t=(bitnode *)malloc(sizeof(Bitree)))) exit(OVERFLOW);
t->data=preorder[startpre];
creatbitree_TWOorder(t->lchild,preorder,startpre+1,left+startpre,inorder,startin,left+startin-1);
printf("====");
creatbitree_TWOorder(t->rchild,preorder,endpre-right+1,endpre,inorder,pos+1,endin); }
} Status creatbitree(Bitree &t)
{
char ch;
scanf("%c",&ch);
if(ch==' ') t=NULL;
else
{
if(!(t=(bitnode *)malloc(sizeof(Bitree)))) exit(OVERFLOW);
t->data=ch;
creatbitree(t->lchild);
creatbitree(t->rchild);
}
return OK;
} Status printelemt(Elemtype e)
{
printf("%c",e);
return OK;
} Status preordertraverse(Bitree t,Status (*visit)(Elemtype e))
{
if(t)
{
if(visit(t->data))
if(preordertraverse(t->lchild,visit))
if(preordertraverse(t->rchild,visit)) return OK;
return ERROR;
}
else
return OK;
} Status inordertraverse(Bitree t,Status (*visit)(Elemtype e))
{
if(t)
{
if(inordertraverse(t->lchild,visit))
if(visit(t->data))
if(inordertraverse(t->rchild,visit)) return OK;
return ERROR;
}
else
return OK;
} Status postordertraverse(Bitree t,Status (*visit)(Elemtype e))
{
if(t)
{
if(postordertraverse(t->lchild,visit))
if(postordertraverse(t->rchild,visit))
if(visit(t->data)) return OK;
return ERROR;
}
else
return OK;
} main()
{
Bitree t;
char a[]="1245673";
char b[]="4265713"; creatbitree_TWOorder(t,a,0,6,b,0,6); preordertraverse(t,printelemt);
printf("\n"); inordertraverse(t,printelemt);
printf("\n"); postordertraverse(t,printelemt);
printf("\n"); }
2013=12=2 bitree的更多相关文章
- 学习WindowsPhone 2013/12/22
菜鸟一枚,只能边看别人的博客变学习来提升自己,参考博客内容:http://blog.csdn.net/column/details/wp-comming.html?page=3 ,稍微看了一下,写的还 ...
- Cheatsheet: 2013 12.17 ~ 12.31
.NET Introducing ASP.NET Web API Throttling handler C# async and await: A Deeper Dive PARALLEL PROGR ...
- Cheatsheet: 2013 12.01 ~ 12.16
Mobile Performance Tuning On Android Interoperation Issues in Mixed C/C++/Objective-C Development We ...
- 打开U盘里是U盘的快捷方式?(2013.12.05)
昨天去打印室打印,结果U盘就中招了 症状: 我的U盘: 打开变成了里面: ...
- 2013=12=2 bitree-----补充
- boost.asio包装类st_asio_wrapper开发教程(2013.12.8更新)(二)
如果你是偶然浏览到这里,请先看 源代码及例程下载地址:命令行:svn checkout http://st-asio-wrapper.googlecode.com/svn/trunk/ st-asio ...
- <2013 12 28> AOI PCB设计
主要设计指标: “3.多块拼板最大尺寸:60*50(CM)4. 检测速度:(230-250)片/小时 5.检测通过率:98%6.最窄线宽:设两种精度 A.最窄线宽:0.2mm, 识别精度 0.1mm ...
- <2013 12 17> 专业技能
Specialties: • Mechanical design modeling using Pro/ENGINEER and SolidWorks.• Robot control, path pl ...
- <2013 12 17> 雅思写作、口语相关
这一个多月,参加了两次雅思考试,成绩分别为: Overall:6.5 L:7.0 R:7.5 W:6.0 S:5.5 Overall:7.0 L:7.0 ...
随机推荐
- myeclipse html乱码
myeclispe 中 html乱码 在页面的开头写上即可 <meta http-equiv="content-type" content="text/html; ...
- php laravel mysql无法连接处理方案(linux服务器配置)
阿里云 Ubuntu 14.*上搭建laravel环境 之前做项目时都是搭建在自己的服务器上,可是自己的那个服务器是很久以前一点点配置好的,也是各种百度,该忘记的都忘了, 所以前一段在客户的阿里云Ub ...
- 异步tcp通信——APM.Server 消息推送服务的实现
消息推送服务 服务器推送目前流行就是私信.发布/订阅等模式,基本上都是基于会话映射,消息对列等技术实现的:高性能.分布式可以如下解决:会话映射可采用redis cluster等技术实现,消息对列可使用 ...
- c# 用正则表达式获取开始和结束字符串中间的值
c# 用正则表达式获取开始和结束字符串中间的值 /// <summary> /// 获得字符串中开始和结束字符串中间得值 /// </summary> /// <para ...
- 通知(Notification)的使用
新建一个 NotificationTest项目,并修改 activity_main.xml 中的代码,如下所示:<LinearLayout xmlns:android="http:// ...
- HTTP,TCP,Socket
TCP/IP三次握手和HTTP过程 1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络 ...
- BOM和DOM详解
DOM介绍 D(文档)可以理解为整个Web加载的网页文档,O(对象)可以理解为类似window对象只来的东西,可以调用属性和方法,这里我们说的是document对象,M(模型)可以理解为网页文档的树形 ...
- jQuery 图片轮播
HTML <div class="carousel"> <ul class="car-img"> <li> ...
- 141 Linked List Cycle(判断链表是否有环Medium)
题目意思:链表有环,返回true,否则返回false 思路:两个指针,一快一慢,能相遇则有环,为空了没环 ps:很多链表的题目:都可以采用这种思路 /** * Definition for singl ...
- 利用php的ob缓存机制实现页面静态化
利用php的ob缓存机制实现页面静态化 首先介绍一下php中ob缓存常用到的几个常用函数ob_start():开启缓存机制ob_get_contents():获取ob缓存中的内容ob_clean()清 ...