原题链接:二叉树遍历
参考代码:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复