非常不熟练  照着书大的

晚上尝试一下自己打  了解二叉树  用数组打

第一次:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. bool failed;
  4.  
  5. void addnode(int v,char *s);
  6. char s[];
  7. struct node
  8. {
  9. bool flag;
  10. int v;
  11. node *left,*right;
  12. node():flag(false),left(NULL),right(NULL){}
  13.  
  14. };
  15. node *root;
  16. node *newnode(){return new node();}
  17. bool read_input()
  18. {
  19. failed=false;
  20. root=newnode();
  21. for(;;)
  22. {
  23. if(scanf("%s",s)!=)return false;
  24. if(!strcmp(s,"()")) break;
  25. int v;
  26. sscanf(&s[],"%d",&v);
  27. addnode(v,strchr(s,',')+);
  28.  
  29. }
  30. return true;
  31.  
  32. }
  33.  
  34. void addnode(int v,char *s)
  35. {
  36. int n=strlen(s);
  37. node *u=root;
  38. for(int i=;i<n;i++)
  39. {
  40. if(s[i]=='L')
  41. {
  42. if(u->left==NULL)u->left=newnode();
  43. u=u->left;
  44.  
  45. }
  46. else if(s[i]=='R')
  47. {
  48. if(u->right==NULL)u->right=newnode();
  49. u=u->right;
  50.  
  51. }
  52.  
  53. }
  54. if(u->flag)failed=true;
  55. u->v=v;
  56. u->flag=true;
  57.  
  58. }
  59.  
  60. bool bfs (vector<int>&ans)
  61. {
  62. queue<node*>q; ans.clear();
  63. q.push(root);
  64. while(!q.empty())
  65. {
  66. node *u=q.front();q.pop();
  67. if(!u->flag)return false;
  68. ans.push_back(u->v);
  69. if(u->left!=NULL)q.push(u->left);
  70. if(u->right!=NULL)q.push(u->right);
  71.  
  72. }
  73. return true;
  74.  
  75. }
  76.  
  77. int main()
  78. {
  79.  
  80. vector<int>ans;
  81. while(read_input())
  82. {
  83. if(!bfs(ans))failed=true;
  84. if(failed)printf("not complete\n");
  85. else
  86. {
  87. for(int i=;i<ans.size();i++)
  88. {
  89. if(i==ans.size()-)printf("%d\n",ans[i]);
  90. else printf("%d ",ans[i]);
  91.  
  92. }
  93.  
  94. }
  95.  
  96. }
  97.  
  98. return ;
  99. }

6-7 树的层次遍历 uva122的更多相关文章

  1. 树的层次遍历(Trees on the level,UVA 122)

    题目描述: 题目思路: 1.用结构链表来建树 2.用队列来实现层次遍历,当遍历到根节点时,将其子节点压入队列 #include <iostream> #include <cstdli ...

  2. UVa 122 树的层次遍历

    题意: 给定一颗树, 按层次遍历输出. 分析: 用数组模拟二叉树, bfs即可实现层次遍历 #include <bits/stdc++.h> using namespace std; st ...

  3. 编程练习:实现树的层次遍历 (CVTE笔试)

    直接层次遍历是比较简单的,但是题目要求的分层打印,这就变得稍微有些麻烦 我是采用两个队列的方法实现. 1.将树结构入队列1. 2.当队列1和队列2都不为空的时候,则一直循环. 3.当队列1不为空的时候 ...

  4. 6_7 树的层次遍历(UVa122)<二叉树的动态创建与BFS>

    树状结构在计算机科学的许多领域中都相当重要.本问题牵涉到建立树及走访树.给你一二叉树,你的任务是写一个程序来打印依「阶层(level-order)」走访的结果.在本问题中,二叉树的每个节点含有一个正整 ...

  5. Uva 122 树的层次遍历 Trees on the level lrj白书 p149

    是否可以把树上结点的编号,然后把二叉树存储在数组中呢?很遗憾如果结点在一条链上,那将是2^256个结点 所以需要采用动态结构 首先要读取结点,建立二叉树addnode()+read_input()承担 ...

  6. 数据结构5_java---二叉树,树的建立,树的先序、中序、后序遍历(递归和非递归算法),层次遍历(广度优先遍历),深度优先遍历,树的深度(递归算法)

    1.二叉树的建立 首先,定义数组存储树的data,然后使用list集合将所有的二叉树结点都包含进去,最后给每个父亲结点赋予左右孩子. 需要注意的是:最后一个父亲结点需要单独处理 public stat ...

  7. Trees on the level UVA - 122 (二叉树的层次遍历)

    题目链接:https://vjudge.net/problem/UVA-122 题目大意:输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个结点的值.每个结点都按照从根节点到它的移动序列给出 ...

  8. PAT树_层序遍历叶节点、中序建树后序输出、AVL树的根、二叉树路径存在性判定、奇妙的完全二叉搜索树、最小堆路径、文件路由

    03-树1. List Leaves (25) Given a tree, you are supposed to list all the leaves in the order of top do ...

  9. <二叉树的基本操作(有层次遍历)>

    #include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK ...

随机推荐

  1. LINQ to SQL 实现 GROUP BY、聚合、ORDER BY

    Ø  前言 本示例主要实现 LINQ 查询,先分组,再聚合,最后在排序.示例很简单,但是使用 LINQ 却生成了不同的 SQL 实现. 1)   采用手动编写 SQL 实现 SELECT ROW_NU ...

  2. C++中路径的处理方法(string)

    string 类提供字符串处理函数,利用这些函数,程序员可以在字符串内查找字符,提取连续字符序列(称为子串),以及在字符串中删除和添加.我们将介绍一些主要函数. 1.函数find_first_of() ...

  3. 键盘按键js效果

    <input id="name" type="text" > JS: <script> document.onkeydown = fun ...

  4. Web开发之404小结

    404算是Web工程里最常见的错误代号了.今天做一个小结: 场景:[Tomcat运行正常,但无法访问自己建的项目:404] 结果:在URL拼写正确的情况下,无法访问目标工程任何页面 信息:[404]: ...

  5. 使用flask_socketio实现服务端向客户端定时推送

    websocket连接是客户端与服务器之间永久的双向通信通道,直到某方断开连接. 双向通道意味着在连接时,服务端随时可以发送消息给客户端,反之亦然,这在一些需要即时通讯的场景比如多人聊天室非常重要. ...

  6. 关于apache 开启 ssl https 支持 TLS1.2 的些事

    项目背景 需要搭建一个小程序的服务器,当然要使用https协议服务器windows service 2012 r2,后台语言是php,服务集成环境装的是appserv2.5 ,apache2.2证书申 ...

  7. mysql 架构~mgr具体细节分析

    一 简介:今天咱们来聊聊mgr的具体实现细节 二 关于多点写入的锁冲突问题以及处理:   certify模块主要负责检查事务是否允许提交,是否与其它事务存在冲突,如两个事务可能修改同一行数据.在单机系 ...

  8. maven私服内容补充

    1.添加阿里云中央仓库 注意Download Remote Indexes选项为True 1.登陆nexus私服(默认账号密码:admin/admin123) 2.点击右侧Repositories 3 ...

  9. ubuntu cron 及 crontab 自动执行任务

    Add the below line (with tweaks) to the end of /etc/crontab: 30 23 * * * root shutdown -h now At 23: ...

  10. @RequestBody,@ResponseBody

    @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上: ...