博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
普通树的递归遍历
阅读量:4586 次
发布时间:2019-06-09

本文共 1873 字,大约阅读时间需要 6 分钟。

#include
#include
#include
#define M 3#define MAX 300FILE*rf;void open(){ rf=fopen("tree.txt","r");}void off(){ fclose(rf);}void in(char *ch){ fscanf(rf,"%c",ch);}//以上为了输入方便,定义从文件输入一棵树typedef struct node{ char data; struct node*child[M];}tnode,*tree;tree creat()//递归先序创建一棵树{ char ch;tree t; in(&ch); if(ch=='#')t=NULL; else { t=(tnode*)malloc(sizeof(tnode)); t->data=ch; int i; for(i=0;i
child[i]=creat(); } return t;}void StackPreorder(tree t)//非递归前序遍历树{ tree stack[MAX]; int istack[MAX];//保存当前栈顶树访问到了那一颗子树 int top=0; while(top||t) { if(t) { printf("%c ",t->data); stack[top]=t;//该树入栈,保存 istack[top++]=1;//记录下一次应该是访问到第2棵树 t=t->child[0];//先访问第一棵子树 } else if(istack[top-1]
child[istack[top-1]++]; else --top;//退栈 }}void StackPostorder(tree t)//非递归后序遍历树{ tree stack[MAX]; int istack[MAX],top=0; while(top||t) { if(t) { stack[top]=t; istack[top++]=1; t=t->child[0]; } else if(istack[top-1]
child[istack[top-1]++]; else { printf("%c ",stack[--top]->data);//出栈 t=NULL;//访问置空 } }}void LevelOrder(tree t){ tree queue[MAX]; int front=0,rear=0,i; if(t)queue[rear++]=t; while(front
data); for(i=0;i
child[i])//如果子树存在,入队 queue[rear++]=t->child[i]; }}int Equal(tree a,tree b){ if(!a&&!b)//都为空,则相等 return 1; if(a&&b) { if(a->data!=b->data)return 0;//数据不同,则树不同 int i; for(i=0;i
child[i],b->child[i])) return 0; return 1;//子树全同,相同 } return 0;//其他不同}int main(){ open(); //ABD#####C###E##F#GH###I##### tree t=creat(); LevelOrder(t); printf("\n"); StackPreorder(t); off();}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/Thereisnospon/p/4768470.html

你可能感兴趣的文章
调用底层不能直接访问的类和方法
查看>>
清理缓存的方法 #DF
查看>>
JAVA array,map 转 json 字符串
查看>>
APICloud模块 aMapLBS.singleAddress在ios返回的是定位而不是地址
查看>>
【ZOJ】1610 Count the Colors
查看>>
抱歉最近朋友结婚去浪了几天~未来几天会正常更新.今天带来XML文件解析
查看>>
[beta cycle]daily scrum7_2.22
查看>>
BSD历史
查看>>
Climbing Stairs
查看>>
css遮罩层与fixed
查看>>
HTML5 Input 类型
查看>>
linux c语言 select函数用法 分类: arm-linux-...
查看>>
浏览网页出现右键查看源代码无效时
查看>>
动态生成的元素绑定KindEditor
查看>>
03--maven4myeclipse配置
查看>>
关于datatable的数据绑定问题
查看>>
c#函数中处理对象的问题
查看>>
转 top、postop、scrolltop、offsetTop、scrollHeight、offsetHeight、clientHeight
查看>>
2017-12-27练习
查看>>
NET设计规范(二) 命名规范
查看>>