|
1 |
| -``````` |
| 1 | +``` |
2 | 2 | public class Solution {
|
3 |
| - public static List<List<Integer>> levelOrder(TreeNode root) { |
4 |
| - List<List<Integer>> list = new ArrayList<>(); |
5 |
| - if (root == null) { |
6 |
| - return list; |
7 |
| - } |
8 |
| - levelOrder(list, root, 0); |
9 |
| - return list; |
10 |
| - } |
| 3 | + public static TreeNode binaryTree(TreeNode node, List<Integer> preOrder, List<Integer> inOrder) { |
| 4 | + if (!preOrder.isEmpty()) { |
| 5 | + Integer val = preOrder.get(0); |
| 6 | + int preIndex = preOrder.indexOf(val); |
| 7 | + int inIndex = inOrder.indexOf(val); |
| 8 | + List<Integer> plOrder = preOrder.subList(preIndex + 1, inIndex + 1); |
| 9 | + List<Integer> prOrder = preOrder.subList(inIndex + 1, preOrder.size()); |
11 | 10 |
|
12 |
| - public static void levelOrder(List<List<Integer>> list, TreeNode node, int level) { |
13 |
| - if (node == null) { |
14 |
| - return; |
15 |
| - } |
16 |
| - if (list.size() < level + 1) { |
17 |
| - List<Integer> levelEle = new ArrayList<>(); |
18 |
| - list.add(levelEle); |
19 |
| - } |
20 |
| - list.get(level).add(node.getVal()); |
21 |
| - levelOrder(list, node.getLeft(), level + 1); |
22 |
| - levelOrder(list, node.getRight(), level + 1); |
| 11 | + List<Integer> ilOrder = inOrder.subList(0, inIndex); |
| 12 | + List<Integer> irOrder = inOrder.subList(inIndex + 1, inOrder.size()); |
| 13 | + if (node == null) { |
| 14 | + node = new TreeNode(val, null, null); |
| 15 | + } |
| 16 | + TreeNode lnode = null,rnode = null; |
| 17 | + if (!plOrder.isEmpty()){ |
| 18 | + lnode = new TreeNode(plOrder.get(0), null, null); |
| 19 | + } |
| 20 | + if (!prOrder.isEmpty()) { |
| 21 | + rnode = new TreeNode(prOrder.get(0), null, null); |
| 22 | + } |
| 23 | + node.setLeft(lnode); |
| 24 | + node.setRight(rnode); |
| 25 | + binaryTree(lnode, plOrder, ilOrder); |
| 26 | + binaryTree(rnode, prOrder, irOrder); |
23 | 27 | }
|
| 28 | + return node; |
| 29 | + } |
24 | 30 |
|
25 |
| - public static void main(String[] args) { |
26 |
| - TreeNode r3r = new TreeNode(7, null, null); |
27 |
| - TreeNode r3l = new TreeNode(15, null, null); |
28 |
| - TreeNode l2r = new TreeNode(20, r3l, r3r); |
29 |
| - TreeNode l2l = new TreeNode(9, null, null); |
30 |
| - TreeNode root = new TreeNode(3, l2l, l2r); |
31 |
| - System.out.println(levelOrder(root)); |
32 |
| - } |
| 31 | + public static void main(String[] args) { |
| 32 | + List<Integer> preOrder = new ArrayList<>(); |
| 33 | + preOrder.add(1); |
| 34 | + preOrder.add(4); |
| 35 | + preOrder.add(6); |
| 36 | + preOrder.add(8); |
| 37 | + preOrder.add(9); |
| 38 | + preOrder.add(10); |
| 39 | + preOrder.add(11); |
| 40 | + List<Integer> inOrder = new ArrayList<>(); |
| 41 | + inOrder.add(6); |
| 42 | + inOrder.add(4); |
| 43 | + inOrder.add(1); |
| 44 | + inOrder.add(9); |
| 45 | + inOrder.add(8); |
| 46 | + inOrder.add(10); |
| 47 | + inOrder.add(11); |
| 48 | + System.out.println(binaryTree(null, preOrder, inOrder)); |
| 49 | + } |
33 | 50 | }
|
34 | 51 |
|
35 | 52 | @Data
|
36 | 53 | @AllArgsConstructor
|
37 | 54 | @NoArgsConstructor
|
| 55 | +@ToString |
38 | 56 | class TreeNode {
|
39 |
| - private Integer val; |
40 |
| - private TreeNode left; |
41 |
| - private TreeNode right; |
| 57 | + private int val; |
| 58 | + private TreeNode left; |
| 59 | + private TreeNode right; |
42 | 60 | }
|
0 commit comments