public TreeNode getTree(int[] inorder, int inorder_begin, int inorder_end,
			int[] postorder, int postorder_begin, int postorder_end) {
		if (inorder_begin > inorder_end || postorder_begin > postorder_end) {
			return null;
		}
		TreeNode root = new TreeNode(postorder[postorder_end]);
		int root_index = inorder_begin;
		while (root_index < inorder_end) {
			if (inorder[root_index] == postorder[postorder_end]) {
				break;
			}
			root_index++;
		}
		root.left = getTree(inorder, inorder_begin, root_index - 1, postorder,
				postorder_begin, postorder_begin + root_index - inorder_begin
						- 1);
		root.right = getTree(inorder, root_index + 1, inorder_end, postorder,
				postorder_begin + root_index - inorder_begin, postorder_end - 1);
		return root;
	}