北大算法分析和复杂性理论-2017算法课第一次作业E:二叉树的操作
来源:互联网 发布:我是歌手网络直播地址 编辑:程序博客网 时间:2024/05/01 20:41
http://algorithm.openjudge.cn/algorithma/E/
题意理解:复杂度允许暴力做,记不记录父亲是谁都可以,注意用指针的话别re。
急转弯:无
算法:无
数据结构:二叉树(的遍历)
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 100 + 10;struct node{ int id, lson, rson, fa;};node t[maxn];int n, m;int getl(int u) { if(t[u].lson == -1) return u; return getl(t[u].lson);}int main() { int T; scanf("%d", &T); for(int _ = 0; _ < T; _++) { scanf("%d%d", &n, &m); memset(t, 0, sizeof(t)); for(int i = 0; i < n; i++){ int x, y, z; scanf("%d%d%d", &x, &y, &z); t[x].lson = y; t[x].rson = z; t[z].fa = x; t[y].fa = x; } for(int i = 0; i < m; i++) { int type, x, y; scanf("%d", &type); if(type == 1) { scanf("%d%d", &x, &y); int xfa = t[x].fa, yfa = t[y].fa; t[x].fa = yfa; t[y].fa = xfa; int *xpos; int *ypos; if(t[xfa].lson == x) { xpos = &t[xfa].lson; } else{ xpos = &t[xfa].rson; } if(t[yfa].lson == y) { ypos = &t[yfa].lson; } else{ ypos = &t[yfa].rson; } int tx = (*xpos), ty = (*ypos); (*xpos) = ty; (*ypos) = tx; } else{ scanf("%d", &x); printf("%d\n", getl(x)); } } } return 0;}
阅读全文
0 0
- 北大算法分析和复杂性理论-2017算法课第一次作业E:二叉树的操作
- 算法分析与复杂性原理 第一次上机 二叉树的操作
- 算法分析与复杂性理论 第一次上机 2的幂次方表示
- 算法设计与复杂性理论 第一次上机 仙岛求药
- 插入排序、归并排序和递归算法的复杂性分析
- 插入排序、归并排序和递归算法的复杂性分析
- 算法分析与复杂性原理 第一次上机 棋盘问题
- 算法复杂性分析
- 算法复杂性分析
- 合并排序算法的时间复杂性分析
- 【计算机算法分析】算法的时间复杂性分析
- 算法的复杂性
- 算法分析与设计第一次作业
- 算法分析与设计第一次作业
- 算法分析与复杂性理论 第三题 Til the Cows Come Home
- 查找和排序算法简介及复杂性分析
- 算法复杂性
- 算法复杂性
- Native VLAN
- 电商订单技术方案梳理
- C++相关问题
- mybatis分页/分页插件
- c++ 模板(1) 模板的声明以及类型别名
- 北大算法分析和复杂性理论-2017算法课第一次作业E:二叉树的操作
- 欢迎使用CSDN-markdown编辑器
- 如何定义一个只能在堆上(或栈上)生成对象的类
- 从零开始前端学习[1]:认识常用的标签
- SQL(DB2)学习20170913
- 判断一个字符串中出现次数最多的字符,统计这个次数
- Oracle基础知识
- VPN连接
- 服务器的配置和下载