题目1523:从上往下打印二叉树
2015-03-10 19:32
344 查看
明明PE,显示WA,郁闷。
层次遍历,利用队列,把根入队列
循环-》输出队首-》儿子入队列
over
层次遍历,利用队列,把根入队列
循环-》输出队首-》儿子入队列
over
#include<cstdio> #include<cstring> #include<queue> using namespace std; typedef struct node { int val; struct node *left; struct node *right; void setVal(int v) { this->val = v; left = right = NULL; } }Tree; void createTree(Tree tree[],int n) { int val,childIndex; for(int i=0;i<n;++i) { scanf("%d",&val); tree[i].setVal(val); } for(int i=0;i<n;++i) { char ch[2]; scanf("%s",ch); if(ch[0] == 'd') { scanf("%d",&childIndex); tree[i].left = &tree[childIndex-1]; scanf("%d",&childIndex); tree[i].right = &tree[childIndex-1]; } else if(ch[0] == 'l') { scanf("%d",&childIndex); tree[i].left = &tree[childIndex-1]; } else if(ch[0] == 'r') { scanf("%d",&childIndex); tree[i].right = &tree[childIndex-1]; } } } void printTree(Tree *tree) { queue<Tree *>qu; qu.push(tree); bool first = true; while(!qu.empty()) { Tree *t = qu.front(); qu.pop(); if(first) printf("%d",t->val); else printf(" %d",t->val); first = false; if(t->left != NULL) { qu.push(t->left); } if(t->right != NULL) { qu.push(t->right); } } } int main() { int n; while(scanf("%d",&n) != EOF) { Tree tree[1111]; createTree(tree,n); printTree(tree); } return 0; }
相关文章推荐
- 【九度】题目1523:从上往下打印二叉树
- 【剑指Offer面试编程题】题目1523:从上往下打印二叉树--九度OJ
- 九度 题目1523:从上往下打印二叉树
- 九度 题目1523:从上往下打印二叉树 题目1521:二叉树的镜像
- 【剑指Offer面试编程题】题目1523:从上往下打印二叉树--九度OJ
- 题目1523:从上往下打印二叉树
- 九度OJ-题目1523:从上往下打印二叉树
- 题目1523:从上往下打印二叉树
- 题目1523:从上往下打印二叉树-九度
- 题目1523:从上往下打印二叉树
- 题目1523:从上往下打印二叉树
- 【剑指Offer面试题】 九度OJ1523:从上往下打印二叉树
- 1523:从上往下打印二叉树 @jobdu
- 算法题目---从上往下打印二叉树
- 题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的结点形成一条路径。
- 剑指Offer - 九度1523 - 从上往下打印二叉树
- 剑指OFFER之从上往下打印二叉树(九度OJ1523)
- 程序员面试题目总结--树(一)【重建二叉树、二叉树的深度、树的子结构、二叉树中和为某一值得路径、从上往下打印二叉树】
- 【九度OJ1523】从上往下打印二叉树
- 考研机试题 九度oj 1523:从上往下打印二叉树