import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;
public class Main {
private static class TreeNode {
TreeNode left;
TreeNode right;
int data;
TreeNode(int newData) {
left = null;
right = null;
data = newData;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] pre = new int[n];
for (int i = 0; i < n; i++)
pre[i] = input.nextInt();
int[] in = new int[n];
for (int i = 0; i < n; i++)
in[i] = input.nextInt();
input.close();
TreeNode treeNode = reConstructBinaryTree(pre, in);
prePost(treeNode);
}
public static TreeNode reConstructBinaryTree(int [] pre,int [] in) {
if(pre.length == 0 || in.length == 0)
return null;
TreeNode root = new TreeNode(pre[0]);
for (int i = 0; i < in.length; i++) {
if(in[i] == pre[0]){
//左子树,copyOfRange函数是左闭右开
root.left = reConstructBinaryTree(Arrays.copyOfRange(pre,1,i+1),Arrays.copyOfRange(in,0,i));
//递归构建左子树
root.right = reConstructBinaryTree(Arrays.copyOfRange(pre,i+1,pre.length),Arrays.copyOfRange(in,i+1,in.length));
break;
}
}
return root;
}
public static void prePost(TreeNode root) {
if (root == null)
System.out.println("空树");
if (root.left != null)
prePost(root.left);
if (root.right != null)
prePost(root.right);
System.out.print(root.data + " ");
}
}
这个代码为什么在蓝桥的测试系统中一直无法通过最后一个测试点
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Andre_dong 2023-02-11 19:00关注
无法确定无法通过最后一个测试点的具体原因,但有几个常见的问题可能需要检查和排除:
程序逻辑问题:在对二叉树进行重构和遍历时,可能出现逻辑错误导致输出结果不符合预期。需要检查程序中的各个逻辑步骤,特别是递归过程中的操作是否正确。
内存问题:如果程序中使用了大量的内存,可能会导致程序在最后一个测试点出现超时或者内存溢出的情况。需要确保程序中的数据结构使用合理,避免内存占用过高。
边界问题:程序中可能存在一些特殊的输入数据,例如长度为0的数组、重复的数据等等,如果没有正确处理这些边界情况,就会导致程序在最后一个测试点出错。
建议在程序中加入一些调试输出,输出程序在执行时的一些中间状态,可以更容易地发现问题所在。同时,可以查看测试数据的具体情况,对照程序输出结果来分析问题
解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
- ¥15 模糊pid与pid仿真结果几乎一样
- ¥15 java的GUI的运用
- ¥15 Web.config连不上数据库
- ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
- ¥15 怎么配置广告联盟瀑布流
- ¥15 Rstudio 保存代码闪退
- ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
- ¥50 invest生境质量模块
- ¥15 nhanes加权logistic回归,svyglm函数