Tree on the level UVa122
很单纯的树的遍历,但是输入和方向好麻烦!!
下面给出代码,题目来自UVa 122
#include<cstdio>
#include<cstring>
#include<vector>
#include<cstdlib>
#include<queue>
using namespace std;
+ ;
struct Node{
bool have_value;
int v;
Node *right,*left;
Node():have_value(false),right(NULL),left(NULL){}
};
Node *root;
Node* newnode(){return new Node();}
void remove_tree(Node* u){ //防止内存泄露。 但可能会出现内存碎片
if(u == NULL)return;
remove_tree(u->left);
remove_tree(u->right);
delete u;
}
char s[maxn];
bool failed;
void addnode(int v,char *s){
int len = strlen(s);
Node* u = root;
; i < len;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)failed = true;
u->v = v;
u->have_value = true;// 标记!!
}
bool read_input(){
failed = false;
remove_tree(root);
root = newnode();
for(;;){
) return false;
if(!strcmp(s,"()"))break; //记住!!strcmp函数中的第二个参数是字符串!!
int v;
sscanf(&s[],"%d", &v); //&s[1]所对应的字符串是从s[1]后的字符串
addnode(v,strchr(s,); //函数strchr(s,',')返回字符串s中从左往右第一个字符","的指针
}
return true;
}
bool bfs(vector<int>& ans){ //bfs遍历树
queue<Node*> q;
ans.clear();
q.push(root);
while(!q.empty()){
Node* u = q.front();q.pop();
if(!u->have_value)return false; //判断是否输入错误
ans.push_back(u->v);
if(u->left != NULL)q.push(u->left);
if(u->right != NULL)q.push(u->right);
}
return true;
}
int main(){
freopen("tree.txt","r",stdin);
freopen("treeout.txt","w",stdout);
vector<int> ans;
while(read_input()){
; // 参数!!
if(failed)printf("-1\n");
else{
; i < ans.size();i++){
if(i)printf(" ");
printf("%d", ans[i]);
}
printf("\n");
}
}
;
}
Tree on the level UVa122的更多相关文章
- [Algorithm] Tree Width with Level Width
// --- Directions // Given the root node of a tree, return // an array where each element is the wid ...
- 内存池技术(UVa 122 Tree on the level)
内存池技术就是创建一个内存池,内存池中保存着可以使用的内存,可以使用数组的形式实现,然后创建一个空闲列表,开始时将内存池中所有内存放入空闲列表中,表示空闲列表中所有内存都可以使用,当不需要某一内存时, ...
- Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / \ 9 20 / \
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vect ...
- 例题6-7 Trees on the level ,Uva122
本题考查点有以下几个: 对数据输入的熟练掌握 二叉树的建立 二叉树的宽度优先遍历 首先,特别提一下第一点,整个题目有相当一部分耗时在了第一个考查点上(虽然有些不必要,因为本应该有更简单的方法).这道题 ...
- [LeetCode] Binary Tree Level Order Traversal 二叉树层序遍历
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- [Leetcode][JAVA] Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- leetcode 102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- 【leetcode】Binary Tree Level Order Traversal I & II
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- LeetCode之Binary Tree Level Order Traversal 层序遍历二叉树
Binary Tree Level Order Traversal 题目描述: Given a binary tree, return the level order traversal of its ...
随机推荐
- 关于jquery的$.ajax发接口的同步与异步问题
1.在使用$.ajax发接口时想对返回数据做一些处理后拿到其他方法中使用 发请求函数如下: function getProjectName(projectId){ project.projectNam ...
- 【Xilinx-VDMA模块学习】-00-开始
最近在做XILINX图像相关的逻辑,需要用到VDMA模块,最后算是把这个模块摸得比较透了. 先在这里记一下,之后有空了总结一下.包括VDMA在Vivado中的GUI配置和软件驱动的详细理解.
- iOS 错误 之 Potential leak of an object stored into 'cs'
存储到 “cs”的对象存在潜在的泄露
- docker tag
docker tag 命令以及其中的一些概念--之我见 1. 重要的本质的东西是 image - docker 最有用的东西是image,这个应该可以被大部分人接受 - 查看官网的 tag 命令,一 ...
- jquery 中prop()的使用方法
1:设置input的选中属性:$('.passenger').find('.is-need-tel').prop('checked',true); 2:获取input是否选中: $('.passeng ...
- JS的组成部分、引入页面的方法以及命名规范
JS的组成部分.引入页面的方法以及命名规范 一.页面是由三部分组成 1)html标签(超文本标记语言) 2)css样式(层叠样式表) 3)javascript脚本编程语言(动态脚本语言) 二.将c ...
- window 2008+apache2.4.4+php5.5+mysql-5.6.12+phpmyadmin4.0.4.1安装过程(参考他人文章基础上加上自己遇到的问题)
一.window server2008的安装 1.我用U盘安装的,先用UltraISO把server2008刻录到U盘中,过程我搜了一下,帖个地址: http://wenku.baidu.com/vi ...
- BZOJ2733 永无乡【splay启发式合并】
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- js原生设计模式——2面向对象编程之继承—call(this)构造函数式继承
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Raphael的text及对齐方式
Raphael的text及对齐方式 <%@ page language="java" contentType="text/html; charset=UTF-8&q ...