百练 二叉树的操作(二叉树)
来源:互联网 发布:五山到软件路13 编辑:程序博客网 时间:2024/06/14 01:24
二叉树的操作
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65535kB
- 描述
给定一棵二叉树,在二叉树上执行两个操作:
1. 节点交换
把二叉树的两个节点交换。
2. 前驱询问
询问二叉树的一个节点对应的子树最左边的节点。- 输入
- 第一行输出一个整数t(t <= 100),代表测试数据的组数。
对于每组测试数据,第一行输入两个整数n m,n代表二叉树节点的个数,m代表操作的次数。
随后输入n行,每行包含3个整数X Y Z,对应二叉树一个节点的信息。X表示节点的标识,Y表示其左孩子的标识,Z表示其右孩子的标识。
再输入m行,每行对应一次操作。每次操作首先输入一个整数type。
当type=1,节点交换操作,后面跟着输入两个整数x y,表示将标识为x的节点与标识为y的节点交换。输入保证对应的节点不是祖先关系。
当type=2,前驱询问操作,后面跟着输入一个整数x,表示询问标识为x的节点对应子树最左的孩子。
1<=n<=100,节点的标识从0到n-1,根节点始终是0.
m<=100 - 输出
- 对于每次询问操作,输出相应的结果。
- 样例输入
25 50 1 21 -1 -12 3 43 -1 -14 -1 -12 01 1 22 01 3 42 23 20 1 21 -1 -12 -1 -11 1 22 0
- 样例输出
1342
二叉树:
操作1:翻转的是两个子树,而不是单纯的两个结点。这样其实更好实现。只要找到两个结点的父亲结点
并且弄明白分明是在父节点的左分支还有右分支即可。
2.打印最左边的结点。递归即可
#include<iostream>#include<cstring>#include<string>using namespace std; int t[444][2];int n,m;void print(int x){if(t[x][0]==-1){cout<<x<<endl;;return;}print(t[x][0]); } int flag1,flag2; //找到他爹并弄清楚是左子树还是右子树 //flag1代表第一个元素的爹以及左右子树,flag2代表第二个 void fun(int x,int a,int b){if(x==-1)return;if(t[x][0]==a){flag1=x*n+0;} if(t[x][1]==a){flag1=x*n+1;}if(t[x][0]==b){flag2=x*n+0;} if(t[x][1]==b){flag2=x*n+1;}fun(t[x][0],a,b);fun(t[x][1],a,b);}int main(){int tt;cin>>tt;while(tt--){cin>>n>>m;for(int i=1;i<=n;i++){int x,y,z;cin>>x>>y>>z;t[x][0]=y;t[x][1]=z;}for(int i=1;i<=m;i++){int x;cin>>x;if(x==1){int y,z;cin>>y>>z; fun(0,y,z);//cout<<endl<<flag1/n<<" "<<flag1%n<<" "<<flag2/n<<" "<<flag2%n<<endl<<endl;swap(t[flag1/n][flag1%n],t[flag2/n][flag2%n]);flag1=flag2=0;}else {int x;cin>>x;print(x);}}}return 0; }
阅读全文
0 0
- 百练 二叉树的操作(二叉树)
- 百练_2756:二叉树
- 百练-2756-二叉树-解题报告
- 百练2255:重建二叉树题解
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉树的操作
- 二叉搜索树(BST)与平衡二叉树(AVL树)专题
- idea常用设置
- Unity优化之GC——合理优化Unity的GC
- cocos creator 学习(九)讲web项目部署到服务器
- LeetCode——344. Reverse String(字符串反转)
- 百练 二叉树的操作(二叉树)
- 19+ JavaScript 常用的简写技巧
- 2017-8-26 ftp协议与vsftpd服务(必会)
- Eclipse —— 无法启动:The Eclipse executable laucher was unable to locate its companion shared library.
- 在sublime编辑安装markdown插件
- python程序中,中文的支持
- rails_admin配置
- 远程桌面mstsc找不到或丢失问题
- #NOIP模拟赛#字母选择Choose(并查集)