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 ...
随机推荐
- IOS开发中使用AFNetworking请求网络数据
1.把AFNetworking的文件拖放到项目中(注意不同的版本方法不一样,本历程基于版本2013): 2.使用#import "AFNetworking.h"命令把AFNetwo ...
- Myeclipseforspring 10破解
破解包和说明下载网址:http://ishare.iask.sina.com.cn/f/33848276.html?all=y
- Scott用户的四张表:
Scott用户的四张表: 转载:http://www.cnblogs.com/mchina/archive/2012/09/06/2649951.html 在Oracle的学习之中,重点使用的是SQL ...
- 在ubuntu上安装k-vim
在ubuntu 上安装k-vim 早就想好好改造一下自己使用的vim了!可惜各种配置都十分复杂,特别是涉及到C语言的语义补全,YouCompleteMe,总是出各种安装问题.今天有人推荐我使用k-vi ...
- UVa 11110 - Equidivisions
题目大意:给一个n*n的矩阵,其中放置n个数字,判断四连通的相同数字的个数是否等于n. Flood fill,本来没什么,用dfs判断一下就可以了,可是用scanf读取输入时TLE了,然后看到别人说要 ...
- javascript--hasOwnProperty()+isPrototypeof()+in方法
1.hasOwnProperty():用来检测对象中是否包含给出的函数属性或者对象,但是无法检测出对象的原型链中是否包含给出的属性或对象--该属性或者对象必须在函数内部被声明 2.isPrototyp ...
- javascript-函数声明和函数表达式-call-apply
1.函数声明与函数表达式 <script type="text/javascript"> //函数表达式,解析器在像执行环境中加载数据时,函数表达式是解析器执行到这段代 ...
- SVN简明课程
Reference: http://www.cnblogs.com/wangkangluo1/archive/2011/08/11/2135312.html 1. 版本控制介绍 1.1. 什么是版本控 ...
- IOS 创建和设置pch
1.添加pch文件 2.修改工程配置文件 Building Settings->All->Apple LLVM 6.0 -Language -> Prefix Header
- 2.4. 属性(Core Data 应用程序实践指南)
属性的名称必须以小写字母开头. 添加 name 和 quantity 属性.