华为机试第二题 按照路径替换二叉树

文章目录

  • 一、题目回忆
    • 输入
    • 样例一
  • 二、Java代码
  • 三、注意

一、题目回忆

将一颗子二叉树按照路径替换到另一棵根二 叉树中, 得到一颗新的二叉
树。替换动作满足如下条件

  1. 子树的根节点完全替换根二叉树对应的节点
  2. 子树根节点下的子树完全保留
  3. 根二叉树的对应节点下的子树完全删除

输入

输入为三行
第一行:一个数组,表示根二叉树。二叉树的每个节点在1到9之间,包
含1和9,空节点用0表示。
第二行:一个字符串,表示子二叉树根节点对应根二叉树的节点,如/1/2”对应(每个节点下不存在相同的子节点,即path对应的子树最多只有一个)

输入限制:
1、给定的根叉树和子 叉树深度不超过5
2、给定的路径始终有效,并且会指向唯一的子二 叉树,不存在子树不
存在的场景

样例一

输入 [1,1,2,0,0,4,5]/1/1/  [5,3,0]
输出: [1,1,5,3]


/1/1表示,在父树中,寻找要被替换的起始节点的路径

二、Java代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Queue;public class test2 {static int N = 40;static int n,m;static int[] A = new int[N];static int[] B = new int[5];static int[] C = new int[N];public static void main(String[] args) throws IOException {BufferedReader re = new BufferedReader(new InputStreamReader(System.in));String s = re.readLine();String s1 = s.substring(1, s.length() - 1);String[] arr = s1.split(",");Arrays.fill(A, -1);n = arr.length;for (int i = 0; i < n; i++) {A[i + 1] = Integer.parseInt(arr[i]);}String[] s2 = re.readLine().split("/"); //获取pathfor (int i = 1; i <s2.length ; i++) {B[i] = Integer.parseInt(s2[i]);}m = s2.length-1; //PATH长度String s3 = re.readLine();String s4 = s3.substring(1, s3.length() - 1);String[] brr = s4.split(",");for (int i = 0; i < brr.length; i++) {C[i + 1] = Integer.parseInt(brr[i]);}int posion = dfs(A,B);
//        System.out.println(posion);reset(A,C,posion,1);System.out.print("["+A[1]);for (int i = 2; i <=n; i++) {if(A[i]!=0)System.out.print(","+A[i]);}System.out.print("]");}public static int dfs(int[] A,int[] B){int p = 1;int j = 1;while(m-->0){if(A[p] != B[j]) {p=p+1;}j++;if(m>0) //当m=0时,表示在寻找path中的最后一个数,不需要再*2了p=p*2;}return p;}//a为父树,b为子树,p为起始坐标public static void reset(int[] a , int[] b, int p,int sonIdx){if(p>31) return;a[p] = b[sonIdx];p = 2*p;sonIdx=sonIdx*2;reset(a , b, p ,sonIdx);reset(a , b, p+1 ,sonIdx+1);}}

三、注意

根据path,逐层遍历主树,找到目的坐标点。
reset函数通过递归进行子树替换
注意输入输出都为数组的形式,带有[]

华为机试第二题420 按照路径替换二叉树相关推荐

  1. 华为机试4.20:按照路径替换二叉树

    按照路径替换二叉树 题目描述 将一棵二叉树按照路径替换到另一棵二叉树中,得到一棵新的二叉树.替换动作满足如下条件: 子树的根节点完全替换根二叉树对应的节点 子树根节点下的子树完全保留 根二叉树的对应节 ...

  2. 华为机试 第二题-速战速决

    9月7号 第二题速战速决 虽然g了,但还是写出了,差一点啊,难过. #include <algorithm> #include <iostream> #include < ...

  3. 华为机试二星题--机器人走迷宫

    题目 机器人走一个迷宫,给出迷宫的x和y(x*y的迷宫)并且迷宫中有障碍物,输入k表示障碍物有k个,并且会将障碍物的坐标挨个输入. 机器人从0,0的位置走到x,y的位置并且只能向x,y增加的方向走,不 ...

  4. 【华为机试真题详解】高矮个子排队

    文章目录 前言 题目描述 示例 1 示例 2 示例 3 题目分析 参考代码 前言 <华为机试真题详解 Python实现>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备 ...

  5. 【华为机试真题详解】欢乐的周末

    文章目录 前言 题目描述 示例 1 示例 2 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会 ...

  6. 【华为机试真题 Python实现】欢乐的周末

    文章目录 前言 题目描述 示例 1 示例 2 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会 ...

  7. [华为机试真题]70.分苹果

    题目 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放.1<=M<=10,1<=N<=10例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法输入 7 3输出 ...

  8. 【华为机试真题 Python实现】路灯问题【2022 Q1 Q2 |200分】

    文章目录 前言 题目描述 示例 1 示例 2 示例 3 示例 4 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了 ...

  9. [华为机试真题][2014]62.去除重复字符并排序

    题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...

最新文章

  1. oracle 多条执行语句同时执行
  2. 【学习笔记】node.js基础介绍
  3. 前端学习(1727):前端系列javascript之需求分析
  4. mysql-用正则表达式进行搜索
  5. QT5新建工程错误-无法打开源文件QtWidgets/QApplication
  6. C#中生成随机数的方法和语句
  7. 数字货币交易系统_区块链交易所开发,数字货币平台功能与安全
  8. 大学计算机—计算思维导论 中国大学mooc 哈尔滨工业大学 测验题目和答案
  9. 海底捞“清疮”300店:千亿龙头的虚与实
  10. Java8 - 定制归一化收集器(reducing)得到自定义结果集
  11. VC++ 防火墙 Win7 XP MFC
  12. 模拟计算机打字,JS实现电脑虚拟键盘打字测试
  13. 写一程序,用scanf函数输入x,输出y值。
  14. C++ std:string 转 LPWSTR
  15. 解决url中times被转成×的问题
  16. 算法工程师之超实用技术路线图
  17. 杰理AC692X---常用模式介绍
  18. R语言3组患者倾向性评分匹配(PSM)
  19. 【聆听】泰戈尔诗集(六)
  20. 189_NTC负温度系数热敏电阻

热门文章

  1. QuickBooks 2007 All-in-One Desk Reference For Dummies
  2. 三国群英传霸业之王服务器维护,20200901维护公告
  3. 第一次软件工程作业(One who wants to wear the crown, Bears the crown.)
  4. 刘润:思考维度越多,理解商业越深
  5. Android之实现长按Webview页面文字自定义复制、全选、分享、搜索、翻译功能(支持多语言,博文也有Demo下载地址)
  6. R语言实战(第二版)第七章-基本统计分析
  7. 诛仙3网游:乾坤珠的获取与使用
  8. UPC 2021个人训练赛第10场
  9. QT Quick项目简介
  10. linux 下使用百度云盘