九度oj 1523 从上往下打印二叉树
原题链接:http://ac.jobdu.com/problem.php?pid=1523
建树,再层次遍历bfs。为了找根方便些,加了father指针。。。
如下:
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
using std::queue;
using std::vector;
using std::cin;
const int Max_N = ;
struct Node{
int v;
Node *f, *ch[];
inline void set(int _v = , Node *p = NULL){
v = _v, f = ch[] = ch[] = p;
}
inline void link(Node *x, bool d){
ch[d] = x;
x->f = this;
}
};
struct BinaryTree{
Node *tail, *root, *null;
Node stack[Max_N], *ptr[Max_N];
void init(){
tail = &stack[];
null = tail++;
null->set();
root = null;
}
inline Node *newNode(int v){
Node *p = tail++;
p->set(v, null);
return p;
}
inline void gogo(int n){
char c;
int i, v, a, b;
for (i = ; i <= n; i++){
scanf("%d", &v);
ptr[i] = newNode(v);
}
for (i = ; i <= n; i++){
cin >> c;
if (c == 'd'){
scanf("%d %d", &a, &b);
ptr[i]->link(ptr[a], );
ptr[i]->link(ptr[b], );
} else if (c == 'l'){
scanf("%d", &a);
ptr[i]->link(ptr[a], );
} else if (c == 'r'){
scanf("%d", &b);
ptr[i]->link(ptr[b], );
} else {
;
}
if (ptr[i]->f == null) root = ptr[i];
}
}
inline void bfs(){
queue<Node *> que;
vector<int> ans;
que.push(root);
while (!que.empty()){
Node *x = que.front();
que.pop();
ans.push_back(x->v);
if (x->ch[] != null) que.push(x->ch[]);
if (x->ch[] != null) que.push(x->ch[]);
}
int n = ans.size();
for (int i = ; i < n; i++){
printf("%d%c", ans[i], i < n - ? ' ' : '\n');
}
}
}tree;
int main(){
#ifdef LOCAL
freopen("in.txt", "r", stdin);
freopen("out.txt", "w+", stdout);
#endif
int n;
while (~scanf("%d", &n)){
tree.init(), tree.gogo(n), tree.bfs();
}
return ;
}
九度oj 1523 从上往下打印二叉树的更多相关文章
- 剑指Offer - 九度1523 - 从上往下打印二叉树
剑指Offer - 九度1523 - 从上往下打印二叉树2013-12-01 00:35 题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以E ...
- 剑指Offer面试题:21.从上到下打印二叉树
一.题目:从上到下打印二叉树 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印.例如输入下图中的二叉树,则依次打印出8.6.10.5.7.9.11. 二叉树节点的定义如下,采用 ...
- 【剑指offer 面试题23】从上往下打印二叉树
思路: 没啥好说的,BFS. C++: #include <iostream> #include <queue> using namespace std; struct Tre ...
- C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
- 剑指offer——从上往下打印二叉树
题目描述:从上到下打印二叉树的节点,同一层的从左到右打印 思路:采用队列来存储单层的节点,然后通过删除队列的头结点操作,依次遍历每一层. 代码为: import java.util.ArrayList ...
- 剑指Offer-从上往下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路 使用两个队列一个存放节点,一个存放值.先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子 ...
- 《剑指offer》从上往下打印二叉树
本题来自<剑指offer> 从上往下打印二叉树 题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 队列的思想. 先将根节点加入,当取该节点时候,依次将左右子树加入,直 ...
- 剑指Offer 22. 从上往下打印二叉树 (二叉树)
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 题目地址 https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed25 ...
- 剑指offer从上往下打印二叉树 、leetcode102. Binary Tree Level Order Traversal(即剑指把二叉树打印成多行、层序打印)、107. Binary Tree Level Order Traversal II 、103. Binary Tree Zigzag Level Order Traversal(剑指之字型打印)
从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode ...
随机推荐
- 【LeetCode】8. String to Integer (atoi) 字符串转整数
题目: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...
- PMP考试--三点估计法
如果你对项目管理.系统架构有兴趣,请加微信订阅号“softjg”,加入这个PM.架构师的大家庭 把施工时间划分为乐观时间.最可能时间.悲观时间 乐观时间:也就是工作顺利情况下的时间为a 最可能时间:最 ...
- 常见行为:仿真&重力&碰撞&捕捉
一.UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架.可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象,重力.弹性碰撞等,游戏开发中很常见,例如愤怒的小鸟. 二.UI ...
- 华为OJ平台——整数的二进制中1的个数
题目描述: 输入一个整数,求该整数的二进制表达中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 思路: 这是一道很基本的考查位运算的面试题.包括微软在内的很多公司都曾采用 ...
- Ajax-(get/post/jQuery方式请求)
< !DOCTYPE html > < html xmlns = "http://www.w3.org/1999/xhtml" > < head &g ...
- python常用内置函数
Python所以内置函数如下: 下面列举一些常用的内置函数: chr()和ord() chr()将数字转换为对应的ascii码表字母 >>> r=chr(65) >>&g ...
- Exceeded maximum number of retries. Exceeded max scheduling attempts 3 for instance
Exceeded maximum number of retries. Exceeded max scheduling attempts 3 for instance
- HTML5-新API选择器
新的选择器document.querySelector("selector");selector:根据CSS选择器返回第一个匹配到的元素,如果没有匹配到,则返回null;支持: C ...
- zedboard如何从PL端控制DDR读写(二)——AXI总线
虽然Xilinx已经将和AXI时序有关的细节都封装起来,给出了官方IP和向导生成自定义IP,用户只需要关注自己的逻辑实现,但是还是有必要简单了解一下AXI的时序,毕竟咱是做硬件设计的. AXI(Ad ...
- 【IHttpHandler】了解 IHttpHandler
1 .概述 说明:HttpHandler是一个HTTP请求的真正处理中心.在HttpHandler容器中,ASP.NET Framework才调用HttpHandler的ProcessRequest成 ...