public TreeNode recBuildTree(int[] preorder, int pb, int pe, int[] inorder, int ib, int ie){
		if(pb>pe) return null;
		TreeNode root = new TreeNode(preorder[pb]);
		if(pb == pe) return root;
		
		int idx = 0;
		for(int i = ib; i<= ie; i++){
			if(inorder[i] == preorder[pb]){
				idx = i-1;
				break;
			}
		}
		
		TreeNode left = this.recBuildTree(preorder, pb+1, pb+1+idx-ib, inorder, ib,idx );
		TreeNode right = this.recBuildTree(preorder, pb+idx-ib + 2,pe ,inorder, idx + 2, ie);
		root.left = left;
		root.right = right;
		
		return root;
	}