原题链接:二叉树遍历
参考代码:
import java.util.*;
public class Main {
static char[] preorder;
static char[] inorder;
class Node{
char val;
Node left;
Node right;
Node(char val) {
this.val = val;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
preorder = scanner.nextLine().toCharArray();
inorder = scanner.nextLine().toCharArray();
Node root = build(0, preorder.length - 1, 0, inorder.length - 1);
print(root);
System.out.println();
}
}
public static void print(Node root) {
if(root == null) return;
if(root.left != null) print(root.left);
if(root.right != null) print(root.right);
System.out.print(root.val);
}
public static Node build(int l1, int r1, int l2, int r2) {
if(l1 > r1) return null;
Node root = new Main().new Node(preorder[l1]);
int mid = l2;
while(inorder[mid] != root.val) mid++;
root.left = build(l1 + 1, mid - l2 + l1, l2, mid - 1);
root.right = build(mid - l2 + l1 + 1, r1, mid + 1, r2);
return root;
}
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复