二叉树及其应用--树
来源:互联网 发布:旺旺怎么开通淘宝店铺 编辑:程序博客网 时间:2024/05/16 10:48
给定树的孩子兄弟表示的数据类型如下
typedef char ElemType;struct CSNode;typedef struct CSNode * CSTree;typedef struct CSNode CSTNode;struct CSNode{ ElemType data; struct CSNode *child; //第一个孩子 struct CSNode *sibling; //下一个兄弟};
树的创建I
完成CSTree CreateTree(char s[])函数,该函数由字符串s创建一颗树,其中字符串s是仅由‘(’、‘)’、‘,’以及大小写字符构成的树的广义表表示,如A(B(D,E,F),C(G)),字符串s以’\0’结尾。创建树时,下一兄弟链安装结点出现的顺序链接,如A(B(D,E,F),C(G))创建的树如下所示
CSTree NewNode(ElemType x){ CSTree p=(CSTree)malloc(sizeof(CSNode)); p‐>data=x; p‐>child=NULL; p‐>sibling=NULL; return p;}CSTree CreateTree(char s[]){ int i,k,top; CSTree path[N],p,t; k=0; top=‐1; for(i=0;s[i]!='\0';i++) { switch(s[i]) { case '(': path[++top]=p; k=1; break; case ',': k=2; break; case ')': top‐‐; break; } if(isalpha(s[i])) { p=NewNode(s[i]); if(k==1) path[top]‐>child=p; else if(k==2) { t=path[top]‐>child; while(t‐>sibling!=NULL) t=t‐>sibling; t‐>sibling=p; } } } return path[0];}//2333
树的创建II
完成CSTree CreateTree(char s[])函数,该函数从标准输入创建一颗树。
创建树时,下一兄弟链安装结点出现的顺序链接,如输入样例创建的树如下所示
输入样列:
输入有多多行,表示树的广度优先遍历。输入样例表示如下所示的一颗树
A
BC#
DEF#
G#
#
#
#
#
CSTree NewNode(ElemType x){ CSTree p=(CSTree)malloc(sizeof(CSNode)); p‐>data=x; p‐>child=NULL; p‐>sibling=NULL; return p;}CSTree CreateTree(){ char a,s[N]; scanf("%c",&a); getchar(); CSTree root=NewNode(a); CSTree u,p,t; queue<CSTree>q; q.push(root); while(!q.empty()) { u=q.front(); q.pop(); fgets(s,N,stdin); if(s[0]=='#') continue; p=NewNode(s[0]); u‐>child=p; q.push(p); for(int i=1;s[i]!='#';i++) { p=NewNode(s[i]); q.push(p); t=u‐>child; while(t‐>sibling!=NULL) t=t‐>sibling; t‐>sibling=p; } } return root;}
完成void Pre_Order(CSTree root)函数,该函按前序遍历的方式遍历树上的结点(下一兄弟中按顺序),如下图所示,前序遍历为ABDEFCG
void Pre_Order(CSTree root){ if(root!=NULL) { printf("%c",root‐>data); if(root‐>child!=NULL) Pre_Order(root‐>child); if(root‐>sibling!=NULL) Pre_Order(root‐>sibling); }}//2335
完成void Post_Order(CSTree root)函数,该函按前后遍历的方式遍历树上的结点(下一兄弟中按顺序),如下图所示,后序遍历为DEFBGCA
void Post_Order(CSTree root){ if(root!=NULL) { if(root‐>child!=NULL) Post_Order(root‐>child); printf("%c",root‐>data); if(root‐>sibling!=NULL) Post_Order(root‐>sibling); }}//2336
0 0
- 二叉树及其应用
- 二叉树及其应用
- 二叉树及其应用--树
- 二叉树接口及其应用
- 遍历二叉树及其应用
- 遍历二叉树及其应用
- 二叉树及其应用--二叉树遍历
- 二叉树及其应用--二叉树创建
- 二叉树及其应用--二叉树的应用
- 平衡二叉树及其应用场景
- 哈夫曼树及其应用-最优二叉树
- 平衡二叉树及其应用场景
- 二叉树的创建及其简单应用
- 平衡二叉树及其应用场景
- 二叉树的遍历及其应用
- C++二叉树及其算法和应用
- 霍夫曼树及其应用(最优二叉树)
- 二叉树的基本应用及其他
- 营救公主的100种方法
- 测试框架之GTest
- Github从零认知
- <Android 基础(九)> Ndk配置与Demo
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- 二叉树及其应用--树
- C#学习日志
- 【Codechef】Tiptoe through the tulips
- MySql学习笔记
- [肝学习资料]数据结构
- Quartz教程一:使用quartz
- JSP前端数据本地排序
- UITableView的基本使用(一)
- linux网络编程(一)