private TreeNode buildTree(int[] inorder, int[] preorder, int start, int end) { if (end < start) { return null; } TreeNode root = new TreeNode(preorder[preIndex++]); if (start == end) { return root; } int inIndex = search(inorder, start, end, root.val); root.left = buildTree(inorder, preorder, start, inIndex - 1); root.right = buildTree(inorder, preorder, inIndex + 1, end); return root; }
public static void main(String[] args) { TreeNode root = new TreeNode(1); root.left = new TreeNode(2); root.right = new TreeNode(2); root.left.left = new TreeNode(3); root.left.right = new TreeNode(3); root.right.left = new TreeNode(4); root.right.right = new TreeNode(3); List<List<Integer>> res = levelOrder(null); for (List<Integer> r : res) { for (int i : r) { System.out.print(i + "\t"); } System.out.println(); } }
private List<TreeNode> generate(int start, int end) { List<TreeNode> list = new ArrayList<TreeNode>(); if (start <= end) { for (int i = start; i <= end; i++) { List<TreeNode> left = generate(start, i - 1); List<TreeNode> right = generate(i + 1, end); int leftSize = left.size(); int rightSize = right.size(); for (int p = 0; p < leftSize; p++) { for (int q = 0; q < rightSize; q++) { TreeNode node = new TreeNode(i); node.left = left.get(p); node.right = right.get(q); list.add(node); } } } } else list.add(null); return list; }
public static void main(String[] args) { ConstructBinaryTreeFromPreorderAndInorderTraversal obj = new ConstructBinaryTreeFromPreorderAndInorderTraversal(); TreeNode result = obj.buildTree(new int[] {2, 1, 3, 4}, new int[] {1, 2, 3, 4}); System.out.println(result.toString()); }
public static void main(String[] args) { TreeNode t1 = new TreeNode(5); TreeNode t2 = new TreeNode(4); TreeNode t3 = new TreeNode(8); TreeNode t4 = new TreeNode(11); TreeNode t5 = new TreeNode(13); TreeNode t6 = new TreeNode(4); TreeNode t7 = new TreeNode(7); TreeNode t8 = new TreeNode(2); TreeNode t9 = new TreeNode(1); t1.left = t2; t1.right = t3; t2.left = t4; t3.left = t5; t3.right = t6; t4.left = t7; t4.right = t8; t6.right = t9; System.out.println(levelOrderBottom(t1)); }