题目1521:二叉树的镜像-九度
2013-08-19 13:45
447 查看
题目描述:
输入一个二叉树,输出其镜像。
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号)。接下来一行有n个数字,代表第i个二叉树节点的元素的值。接下来有n行,每行有一个字母Ci。
Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。
Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号。
Ci=’r’表示第i个节点有一个右孩子,紧接着是右孩子的编号。
Ci=’z’表示第i个节点没有子孩子。
输出:
对应每个测试案例,
按照前序输出其孩子节点的元素值。
若为空输出NULL。
样例输入:
样例输出:
输入一个二叉树,输出其镜像。
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号)。接下来一行有n个数字,代表第i个二叉树节点的元素的值。接下来有n行,每行有一个字母Ci。
Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。
Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号。
Ci=’r’表示第i个节点有一个右孩子,紧接着是右孩子的编号。
Ci=’z’表示第i个节点没有子孩子。
输出:
对应每个测试案例,
按照前序输出其孩子节点的元素值。
若为空输出NULL。
样例输入:
7 8 6 10 5 7 9 11 d 2 3 d 4 5 d 6 7 z z z z
样例输出:
8 10 11 9 6 7 5
推荐指数:※
来源:http://ac.jobdu.com/problem.php?pid=1521
递归
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<vector> using namespace std; typedef struct Tree{ int val; int left; int right; }Tree; typedef struct node{ int val; node* left; node* right; }node; vector<Tree> tree; node * mirror_tree(int n){ if(n!=-1){ node *t=new node; t->val=tree .val; t->left=mirror_tree(tree .right); t->right=mirror_tree(tree .left); return t; } else return NULL; } void print_pre_tree(node * root){ if(root!=NULL){ printf(" %d",root->val); print_pre_tree(root->left); print_pre_tree(root->right); } } int main() { int n,i; while(scanf("%d",&n)!=EOF){ tree.resize(n+1); for(i=1;i<=n;i++){ scanf("%d",&tree[i].val); } for(i=1;i<=n;i++){ char child[2]; scanf("%s",child); if(child[0]=='d'){ scanf("%d",&tree[i].left); scanf("%d",&tree[i].right); } else if(child[0]=='l'){ scanf("%d",&tree[i].left); tree[i].right=-1; } else if(child[0]=='r'){ scanf("%d",&tree[i].right); tree[i].left=-1; } else { tree[i].left=-1; tree[i].right=-1; } } if(n>0){ node *t=mirror_tree(1); printf("%d",t->val); print_pre_tree(t->left); print_pre_tree(t->right); printf("\n"); }else printf("NULL\n"); } return 0; }
相关文章推荐
- 九度 题目1523:从上往下打印二叉树 题目1521:二叉树的镜像
- 九度 题目1521:二叉树的镜像
- 九度OJ-题目1521:二叉树的镜像
- 【九度】题目1521:二叉树的镜像
- 剑指Offer题目1521:二叉树的镜像
- 【剑指Offer面试题】 九度OJ1521:二叉树的镜像
- 剑指Offer - 九度1521 - 二叉树的镜像
- 九度 1521:二叉树的镜像
- 九度oj 1521 二叉树的镜像
- 题目1521:二叉树的镜像
- 题目1521:二叉树的镜像
- 【剑指Offer面试编程题】题目1521:二叉树的镜像--九度OJ
- 【剑指Offer面试编程题】题目1521:二叉树的镜像--九度OJ
- 题目1521:二叉树的镜像
- [Jobdu] 题目1521:二叉树的镜像
- 题目1521:二叉树的镜像
- 题目1521:二叉树的镜像
- 【九度OJ1521】|【剑指offer19】二叉树的镜像
- 九度Oj题目1113:二叉树
- 【LeetCode题目记录-11】判断二叉树是否是镜像的(对称的)