632(层次遍历,广度优先搜索)
来源:互联网 发布:淘宝上买精密管判几天 编辑:程序博客网 时间:2024/05/03 12:43
输入:(11,LL) (7,LLL) (8,R) (5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()
输出:5 4 8 11 13 4 7 2 1
#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAXN 300typedef struct Tnode{ int have_value,v; struct Tnode *left,*right;}Node;Node* root;int flag=1;Node* newnode(){ Node* u=(Node*)malloc(sizeof(Node)); if(u!=NULL){ u->have_value=0; u->left=u->right=NULL; } return u;}void remove_tree(Node* u){ if(u==NULL) return; remove_tree(u->left); remove_tree(u->right); free(u);}void addnode(int v,char* s){ int n=strlen(s); Node* u=root; int i; for(i=0;i<n;i++){ if(s[i]=='L'){ if(u->left==NULL) u->left=newnode(); u=u->left; }else if(s[i]=='R'){ if(u->right==NULL) u->right=newnode(); u=u->right; } } if(u->have_value) flag=0;//有节点被重复赋过值,表示输入错误 u->v=v; u->have_value=1;}void read_input(){ root=newnode(); for(;;){ char s[MAXN];// if(scanf("%s",s)!=1) return; scanf("%s",s); if(!strcmp(s,"()")) break; int v; sscanf(&s[1],"%d",&v); addnode(v,strchr(s,',')+1); }}int n=0,ans[MAXN];void bfs(){ if(flag==0) return; int front=0,rear=1; Node* q[MAXN];//存放节点的队列 q[0]=root; while(front<rear){ Node* u=q[front++]; if(u->have_value==0) {//有节点没被赋值过,表明输入有误 flag=0; return; } ans[n++]=u->v; if(u->left!=NULL) q[rear++]=u->left; if(u->right!=NULL) q[rear++]=u->right; }}int main(){ read_input(); bfs(); remove_tree(root); if(!flag){ printf("-1\n"); return 0; } int i; for(i=0;i<n;i++){ printf("%d ",ans[i]); } return 0; } //(11,LL) (7,LLL) (8,R) (5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()//(3,L) (4,R) ()
0 0
- 632(层次遍历,广度优先搜索)
- 广度优先遍历(搜索)(BFS)
- 图的遍历(广度优先搜索)
- 广度优先搜索遍历(BFS)
- BFS广度优先搜索遍历
- 图的遍历(广度优先搜索遍历)
- 二叉树遍历(前序、中序、后序、层次遍历、深度优先、广度优先)
- 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
- 二叉树的层次遍历和图的广度优先搜索的相同点和不同点
- 剑指offer--从上往下打印二叉树--层次遍历、广度优先搜索
- 深度优先搜索遍历与广度优先搜索遍历
- 【算法导论】图的广度优先搜索遍历(BFS)
- 基于邻接矩阵的广度优先搜索遍历 (BFS)
- 二叉树的层次遍历(广度优先遍历)
- 树的非递归遍历(深度优先:前|中|后序遍历) & (广度优先:层次遍历)
- 图的遍历-广度优先搜索
- 广度优先搜索(图的遍历)
- 图的遍历 之 广度优先搜索
- VPS部署web项目
- 占小狼之-JVM-JVM内存的那些事
- Android手机车牌识别OCR
- REST 在 Java 中的使用
- mybatis 多数据源配置
- 632(层次遍历,广度优先搜索)
- 循环语句
- 浏览器的重绘与重排
- 常见端口号和解释
- 构建高扩展性网站
- STM32F407系统时钟配置
- const
- Java的clone方法
- WebService基础