PAT程序设计考题——甲级1102( Invert a Binary Tree ) C++实现
来源:互联网 发布:windows查看显存 编辑:程序博客网 时间:2024/06/07 17:39
#include<iostream>
#include<math.h>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<vector>
using namespace std;
#define INF 100000000
#define maxn 100010
struct node{//由于题目中直接 给出了节点关系 用静态二叉树比较方便
int lchild;
int rchild;
};
node tree[maxn];
bool notroot[maxn]={false};
int n,num=0;//n为节点的 个数 num为当前一斤输出的节点的个数
void print (int id)
{
cout<<id;
num++;
if(num<n) cout<<" ";
else cout<<endl;
}
void inorder(int root)
{ if(root==-1) return;
inorder(tree[root].lchild);
print(root);
inorder(tree[root].rchild);
}
void BFS(int root)
{
queue<int> q;
q.push(root);
while(!q.empty())
{
int temp=q.front();
q.pop();
print(temp);
if(tree[temp].lchild!=-1) q.push(tree[temp].lchild);
if(tree[temp].rchild!=-1) q.push(tree[temp].rchild);
}
}
void post(int root)//翻转二叉树
{
if(root==-1) return;
post(tree[root].lchild);
post(tree[root].rchild);
swap(tree[root].lchild,tree[root].rchild);
}
int main()
{ cin>>n;
char a,b;
for(int i=0;i<n;i++)
{
cin>>a>>b;
if(a=='-') tree[i].lchild=-1;
else tree[i].lchild=a-'0',notroot[a-'0']=true;
if(b=='-') tree[i].rchild=-1;
else tree[i].rchild=b-'0',notroot[b-'0']=true;
}
int root;
for(int i=0;i<n;i++){
root=i;
if(notroot[i]==false) break;
}
post(root);
//cout<<root;
BFS(root);
num=0;
inorder(root);
return 0;
}
#include<math.h>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<vector>
using namespace std;
#define INF 100000000
#define maxn 100010
struct node{//由于题目中直接 给出了节点关系 用静态二叉树比较方便
int lchild;
int rchild;
};
node tree[maxn];
bool notroot[maxn]={false};
int n,num=0;//n为节点的 个数 num为当前一斤输出的节点的个数
void print (int id)
{
cout<<id;
num++;
if(num<n) cout<<" ";
else cout<<endl;
}
void inorder(int root)
{ if(root==-1) return;
inorder(tree[root].lchild);
print(root);
inorder(tree[root].rchild);
}
void BFS(int root)
{
queue<int> q;
q.push(root);
while(!q.empty())
{
int temp=q.front();
q.pop();
print(temp);
if(tree[temp].lchild!=-1) q.push(tree[temp].lchild);
if(tree[temp].rchild!=-1) q.push(tree[temp].rchild);
}
}
void post(int root)//翻转二叉树
{
if(root==-1) return;
post(tree[root].lchild);
post(tree[root].rchild);
swap(tree[root].lchild,tree[root].rchild);
}
int main()
{ cin>>n;
char a,b;
for(int i=0;i<n;i++)
{
cin>>a>>b;
if(a=='-') tree[i].lchild=-1;
else tree[i].lchild=a-'0',notroot[a-'0']=true;
if(b=='-') tree[i].rchild=-1;
else tree[i].rchild=b-'0',notroot[b-'0']=true;
}
int root;
for(int i=0;i<n;i++){
root=i;
if(notroot[i]==false) break;
}
post(root);
//cout<<root;
BFS(root);
num=0;
inorder(root);
return 0;
}
阅读全文
0 0
- PAT程序设计考题——甲级1102( Invert a Binary Tree ) C++实现
- PAT程序设计考题——甲级1043(Is It a Binary Search Tree ) C++实现
- PAT程序设计考题——甲级1065( A+B and C (64bit) ) C++实现
- PAT程序设计考题——甲级1066(Root of AVL Tree ) C++实现
- PAT程序设计考题——甲级1020( Tree traverse ) C++实现
- PAT程序设计考题——甲级1001( A+B Format ) C++实现
- PAT程序设计考题——甲级1002(A+B for Polynomials ) C++实现
- PAT程序设计考题——甲级1058(A+B in Hogwarts ) C++实现
- 1102. Invert a Binary Tree (25)-PAT甲级真题
- 1102. Invert a Binary Tree (25) PAT甲级
- PAT 甲级 1102. Invert a Binary Tree (25)
- pat 1102 Invert a Binary Tree
- PAT程序设计考题——甲级1007 (最大连续子序列和) C++实现
- PAT程序设计考题——甲级1045 (最长不下降子序列) C++实现
- PAT程序设计考题——甲级1045 (最长公共子序列) C++实现
- PAT程序设计考题——甲级1040 (最长回文串) C++实现
- PAT程序设计考题——甲级1068 (背包问题) C++实现
- PAT程序设计考题——甲级1042(洗牌机) C++实现
- ajax post 提交大量数据
- Dbutils入门及简单增删改查操作
- LightOJ1282_Leading and Trailing _对数求前三位数&快速幂
- Js提交表单的两种方法
- PAT (Advanced Level) Practise 1034 Head of a Gang (30)
- PAT程序设计考题——甲级1102( Invert a Binary Tree ) C++实现
- Eigen库使用注意事项
- 算法:并查集的实现及简单优化
- Centos 7防火墙iptables开放指定端口(80)和设置ftp的方法
- 欧几里得算法(辗转相除法)
- JSONObject和JSONArray区别及基本用法
- 位运算
- linux命令(进程结束):killall命令
- 关于人脸识别的两大模型的比较