public TreeNode buildBST(ListNode[] node, int head, int tail) {
		if (head > tail) {
			return null;
		} else if (head == tail) {
			ListNode tmpNode = node[0];
			node[0] = node[0].next;
			return new TreeNode(tmpNode.val);
		}
		int mid = head + ((tail - head) >> 1);
		TreeNode leftBST = buildBST(node, head, mid - 1);
		TreeNode selfNode = buildBST(node, mid, mid);
		TreeNode rightBST = buildBST(node, mid + 1, tail);
		selfNode.left = leftBST;
		selfNode.right = rightBST;
		return selfNode;
	}