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";//preorder
char b[]="4265713";//inorder creatbitree_TWOorder(t,a,0,6,b,0,6);
//creatbitree(t);
preordertraverse(t,printelemt);
printf("\n"); inordertraverse(t,printelemt);
printf("\n"); postordertraverse(t,printelemt);
printf("\n"); }
bitree的更多相关文章
- 2013=12=2 bitree
#include "stdio.h" #include "stdlib.h" #define OVERFLOW -1 #define ERROR -1 #def ...
- 二叉树的创建和遍历(C版和java版)
以这颗树为例:#表示空节点前序遍历(根->左->右)为:ABD##E##C#F## 中序遍历(左->根->右)为:#D#B#E#A#C#F# 后序遍历(左->右-> ...
- C /C++ 语言练习册
/************************************** 整数对应 32 bit 二进制数串中数字1的个数 2016-10-24 liukun ***************** ...
- 二叉排序树(BST)创建,删除,查找操作
binary search tree,中文翻译为二叉搜索树.二叉查找树或者二叉排序树.简称为BST 一:二叉搜索树的定义 他的定义与树的定义是类似的,也是一个递归的定义: 1.要么是一棵空树 2.如果 ...
- HDU 5458 Stability(双连通分量+LCA+并查集+树状数组)(2015 ACM/ICPC Asia Regional Shenyang Online)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458 Problem Description Given an undirected connecte ...
- 数据结构代码整理(线性表,栈,队列,串,二叉树,图的建立和遍历stl,最小生成树prim算法)。。持续更新中。。。
//归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 100 ...
- 树(三)——自平衡二叉树(AVL)
简介 自平衡二叉树(AVL)属于二叉平衡树的一类,此类树主要完成一个从键到值的查找过程,即字典(或映射),它维护树高度的方式与其他数据结构不同. 自平衡规则: AVL树的左.右子树都是AVL树 左.右 ...
- 二叉树的实现与一些基本操作(C++环境)
#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>using na ...
- 二叉树[C实现]
#include<stdio.h> #include<malloc.h> #include<iostream> //定义节点 typedef struct BiNo ...
随机推荐
- 异步编程中使用帮助类来实现Thread.Start()的示例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 那些年不错的Android开源项目(转)
第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...
- spring 读取properties的两种方法
一:直接使用context命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi= ...
- codevs 1282 约瑟夫问题(线段树)
#include<iostream> #include<cstdio> #include<cstring> #define maxn 30010 using nam ...
- ThinkPHP学习 volist标签高级应用之多重嵌套循环、隔行变色(转)
Action代码: public function index(){ $prod = I("get.prod_en"); $id = I("get.id", 0 ...
- jquery获取元素到页面顶部距离
jquery获取元素到页面顶部距离的语句为: $(selector).offset().top
- JS 点击事件失效
有时候,会发现js失效 ,代码如果是如下的时候 <input type="button" onclick="change()"value="変更 ...
- (转)ThinkPHP3.0 使用分组后路径访问无效的解决方法!
注意,清除Runtime,就是清除缓存,很重要,妹的,调试了一下午,总是加上Home目录分组就找不到页面,直接放到action下就行,原来是缓存搞得鬼,另外要在入口文件开启‘APP_DEBUG’ 在T ...
- 99%Bug 修复方法
以下仅支持4.0.3或之后的设备 (写在前面,这个教程需要安装两个app,且卸载后无法达到效果,所以有app drawer洁癖者慎重(你可以把它们隐藏起来么). 当然等官方rom更新或者安装最新三方r ...
- UITableView中的visibleCells的用法(visibleCells帮上大忙了)
这两天遇到一个问题,UITableView中需要加入动画,而且每一行的速度不一样. 刚开始做时把所有的cell都遍历一遍加上动画,后来发现,如果数据很多时,就会出现各种各样的问题,而且没有显示在界 ...