Binary Tree Restoring

思路:

递归

比较a序列和b序列中表示同一个子树的一段区间,不断递归

代码:

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))const int N=1e5+5;
int a[N],b[N],par[N],posa[N],posb[N],sum[N],n;
void dfs(int l,int r,int ll,int rr,int pa){if(l>r||ll>rr||r>n||rr>n)return ;if(a[l]==b[ll]){par[a[l]]=pa;sum[pa]++;dfs(l+1,r,ll+1,rr,a[l]);}else{par[a[l]]=par[b[ll]]=pa;sum[pa]+=2;int len1=posa[b[ll]]-l;int len2=posb[a[l]]-ll;dfs(l+1,l+len1-1,posb[a[l]]+1,posb[a[l]]+len1-1,a[l]);dfs(posa[b[ll]]+1,posa[b[ll]]+len2-1,ll+1,ll+len2-1,b[ll]);while(sum[pa]==2)pa=par[pa];dfs(l+len1+len2,r,ll+len1+len2,rr,pa);}
}
int main(){int T;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]),posa[a[i]]=i;for(int i=1;i<=n;i++)scanf("%d",&b[i]),posb[b[i]]=i;mem(sum,0);dfs(1,n,1,n,0);for(int i=1;i<=n;i++)printf("%d%c",par[i]," \n"[i==n]);}return 0;
}

转载于:https://www.cnblogs.com/widsom/p/8559158.html

ZOJ 3965 Binary Tree Restoring相关推荐

  1. 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  2. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  3. [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

  5. 二叉树的路径(根节点到叶节点)Binary Tree Paths

    为什么80%的码农都做不了架构师?>>>    问题: Given a binary tree, return all root-to-leaf paths. For example ...

  6. LeetCode - Maximum Depth of Binary Tree

    递归求二叉树的最大深度. /*** Definition for binary tree* public class TreeNode {* int val;* TreeNode left;* Tre ...

  7. Balanced Binary Tree leetcode java

    题目: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bin ...

  8. [leetcode] Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...

  9. PAT(甲级)2019年春季考试 7-4 Structure of a Binary Tree

    目录 整体思路 犯的错误 代码 整体思路 1.先根据后序和中序序列建树,老生常谈,记得返回root 2.对树进行BFS,在这个过程中用hash的方式记录下每个值对应的父节点.左孩子.右孩子的值,记录下 ...

最新文章

  1. CUDA运行时Runtime(三)
  2. 关于dns域名轮询监控的疑问
  3. 年度回顾:2018年的AI/ML惊喜及预测19年的走势(一)...
  4. Python实现计数排序
  5. 腾讯开源大规模X光预训练模型及代码 |MICCAI 2020
  6. 【numpy】使用numpy/pytorch创建数组时的一点疑问
  7. 3.2 为超参数选择合适的范围
  8. html 自定义标签 seo,wordpress深层seo优化:自定义栏目和tag标签页面title标题
  9. 什么是Bootstrap?
  10. Linux双网卡bonding举例
  11. 网络是怎样连接的学习笔记1----探索浏览器内部(十分适合理清思路)
  12. Python基于cq-http协议端,使用nonebot2框架制作属于自己的智能机器人
  13. 51单片机智能小车寻循迹代码
  14. 魅族16支持html吗,魅族16功能有哪些
  15. 伯禹公益AI《动手学深度学习PyTorch版》Task 07 学习笔记
  16. 异地多活(异地双活)实践经验
  17. *【华为机试真题详解】判断字符串子序列**
  18. 杂记-----------
  19. 数据挖掘学习——第一周周报
  20. Life feelings--14--2020永恒的记忆-2021你好

热门文章

  1. 液晶弹性自由能计算_自由能方法应用(一)开放计算平台BRIDGE的介绍及使用案例...
  2. win10图标变白纸_超详细的纯净版win10安装教程,手把手教你学会,小白秒变大神!...
  3. java编程东西好多记不住_课程总结
  4. html把div分成两栏,div+css制作上中下,中间两列的全屏自适应布局
  5. java webengine_如何以Java实现网页截图技术
  6. java map null吗_Java: Map里面的键和值可以为空吗?
  7. c++服务器开源项目,开源一个c++ lua服务器框架
  8. 漏磁用MATLAB,管道漏磁内检测数据可视化技术研究
  9. 计算机 课题学科代码,学科分类与代码表课题.doc
  10. 鸿蒙os首批适配机型,鸿蒙OS正式版首批名单曝光,适配速度让人意外,8款机型恭喜了...