孩子指针表示法关于前序遍历的括号表示和凹入表示
来源:互联网 发布:服装cad软件排名 编辑:程序博客网 时间:2024/04/28 04:31
#include<iostream>#include<cstdio>#define maxn 11111#define m 3using namespace std;typedef struct k{ char data; struct k *child[m];}Tree;Tree *createbypre(Tree *t){ char c; cin>>c; if(c=='#') return NULL; t=new Tree; t->data=c; for(int i=0;i<m;i++) t->child[i]=createbypre(t->child[i]); return t;}void prepost(Tree *t){ if(t==NULL) return ; cout<<t->data; for(int i=0;i<m;i++) prepost(t->child[i]);}void kuohao(Tree *t)//根据前序遍历的括号表示法{ int k =0 ; if(t==NULL) return ;//到达叶子节点,则返回 cout<<t->data;//输出根节点 while(k<m&&t->child[k]==NULL) k++;//看根节点有没有儿子节点 if(k==m) return ;//若没有则直接返回 cout<<'(';//有的话就输出左括号,代表儿子节点的区间开始 int i=k; while(i<m) { if(t->child[i]!=NULL) //如果儿子节点存在 { kuohao(t->child[i]);//输出该节点的同时找该节点是否有儿子节点 i++;//看该节点有没有兄弟,从下一个开始找 while(i<m&&t->child[i]==NULL) i++;//看是否存在这样的兄弟 if(i!=m) cout<<',';//存在则输出, }else i++; } if(k!=m) cout<<')';//最后则输出右括号}void aoru(Tree *t,int d)//根据前序遍历的凹入表示法{ if(t==NULL) return ; for(int i=0;i<10;i++) if(i<d) printf(" "); else if(i==d) printf("%c",t->data); else printf("--"); printf("\n"); for(int i=0;i<m;i++) aoru(t->child[i],d+1);}int main(){ Tree *t; t=createbypre(t); prepost(t); cout<<endl; kuohao(t); cout<<endl; aoru(t,1); return 0;}
1 0
- 孩子指针表示法关于前序遍历的括号表示和凹入表示
- 前序遍历的层号表示转孩子数组表示法
- 括号表示法转孩子指针法
- 括号表示转孩子数组表示法
- 凹入表示法(C语言版)
- 二叉树输出(凹入表示法)
- 树的孩子兄弟表示法 及遍历实现
- 树的孩子表示法(指针形式)
- 树的括号表示法
- 树的括号表示法
- 树-孩子表示法
- 树 的 双亲表示法 及 双亲孩子表示法
- 树的括号表示
- 图的表示和遍历
- 树的左孩子 右兄弟表示法的建立过程 (后序遍历)
- 树的括号表示+树的孩子表示线性结构实现
- 前序遍历用一维数组表示的二叉树
- 数组和指针表示法
- [转]C#:用SqlBulkCopy来实现批量插入数据
- Range Sum Query - Immutable
- BMP文件的读取与写入
- 3D开发基础之投影,变换,光照,纹理
- mvc 执行说明 再次写
- 孩子指针表示法关于前序遍历的括号表示和凹入表示
- 实验周作业~~QQ聊天记录的处理
- java访问权限控制表
- 多线程知识总结
- 黑马程序员——OC基础01—类和对象
- Java类笔试简答
- css+font awesom 做的时间轴
- Json数据在线格式化
- mssql插入数据的2种办法