fork download
  1. package com.iw.tree;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5.  
  6. public class TreeFromInorderPreorder {
  7. public static int preIndex = 0;
  8. public static void main(String[] args) {
  9. int pre[] = {7,10,4,3,1,2,8,11};
  10. int in[] = {4,10,3,1,7,11,8,2};
  11. int post[] = {4,1,3,10,11,8,2,7};
  12. Map indexMap = indexFromVal(in);
  13.  
  14. //TreeNode root = inorderPreorder(in,pre,0,in.length - 1 ,indexMap);
  15.  
  16. //TreeNode root = buildInorderPreorder(pre,pre.length-1,0,indexMap,0);
  17. TreeNode root = buildInorderPostorder(post,post.length,0,indexMap,8);
  18. postorder(root);
  19.  
  20. }
  21.  
  22. public static TreeNode inorderPreorder(int in[],int pre[], int inStart, int inEnd, Map<Integer,Integer> indexMap) {
  23.  
  24. if(inStart > inEnd)
  25. return null;
  26. TreeNode root = new TreeNode(pre[preIndex++]);
  27. int index = indexMap.get(root.getValue());
  28. root.setLeft(inorderPreorder(in, pre, inStart, index -1 , indexMap));
  29. root.setRight(inorderPreorder(in, pre, index+1, inEnd , indexMap));
  30.  
  31. return root;
  32.  
  33. }
  34.  
  35. public static TreeNode buildInorderPreorder( int pre[], int n, int offset,Map<Integer,Integer> indexMap,int index) {
  36. if (n <= 0) return null;
  37. int rootVal = pre[index];
  38. int i = (indexMap.get(rootVal) - offset);
  39. TreeNode root = new TreeNode(rootVal);
  40. root.setLeft(buildInorderPreorder( pre, i, offset,indexMap,index+1));
  41. root.setRight(buildInorderPreorder(pre, n-i-1, offset+i+1,indexMap,index+i+1));
  42. return root;
  43. }
  44.  
  45.  
  46.  
  47. public static TreeNode buildInorderPostorder( int post[], int n, int offset,Map<Integer,Integer> indexMap,int size) {
  48. if (size <= 0) return null;
  49. int rootVal = post[n-1];
  50. int i = (indexMap.get(rootVal) - offset);
  51. TreeNode root = new TreeNode(rootVal);
  52. root.setLeft(buildInorderPostorder( post, i, offset,indexMap,i-offset));
  53. root.setRight(buildInorderPostorder(post, n-1, offset+i+1,indexMap,n-1-i));
  54. return root;
  55. }
  56.  
  57.  
  58.  
  59. public static void inorder(TreeNode root) {
  60. if(root != null) {
  61. inorder(root.getLeft());
  62. System.out.print(root.getValue() + ",");
  63. inorder(root.getRight());
  64.  
  65. }
  66.  
  67. }
  68.  
  69. public static void postorder(TreeNode root) {
  70. if(root != null) {
  71. postorder(root.getLeft());
  72.  
  73. postorder(root.getRight());
  74. System.out.print(root.getValue() + ",");
  75. }
  76.  
  77. }
  78. public static Map indexFromVal(int in[]) {
  79. Map indexMap = new HashMap<Integer, Integer>();
  80. for(int i =0 ; i<in.length; i++) {
  81. indexMap.put(in[i], i);
  82. }
  83. return indexMap;
  84. }
  85. }
  86.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:6: error: class TreeFromInorderPreorder is public, should be declared in a file named TreeFromInorderPreorder.java
public class TreeFromInorderPreorder {
       ^
Main.java:22: error: cannot find symbol
	public static TreeNode inorderPreorder(int in[],int pre[], int inStart, int inEnd, Map<Integer,Integer> indexMap) {
	              ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:35: error: cannot find symbol
	public static TreeNode buildInorderPreorder( int pre[], int n, int offset,Map<Integer,Integer> indexMap,int index) {	  
	              ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:47: error: cannot find symbol
	public static TreeNode buildInorderPostorder( int post[], int n, int offset,Map<Integer,Integer> indexMap,int size) {	  
	              ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:59: error: cannot find symbol
	public static void inorder(TreeNode root) {
	                           ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:69: error: cannot find symbol
	public static void postorder(TreeNode root) {
	                             ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:17: error: cannot find symbol
		TreeNode root = buildInorderPostorder(post,post.length,0,indexMap,8);
		^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:26: error: cannot find symbol
		TreeNode root = new TreeNode(pre[preIndex++]);
		^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:26: error: cannot find symbol
		TreeNode root = new TreeNode(pre[preIndex++]);
		                    ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:39: error: cannot find symbol
	  TreeNode root = new TreeNode(rootVal);
	  ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:39: error: cannot find symbol
	  TreeNode root = new TreeNode(rootVal);
	                      ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:51: error: cannot find symbol
		  TreeNode root = new TreeNode(rootVal);
		  ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Main.java:51: error: cannot find symbol
		  TreeNode root = new TreeNode(rootVal);
		                      ^
  symbol:   class TreeNode
  location: class TreeFromInorderPreorder
Note: Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
13 errors
stdout
Standard output is empty