TreeNode buildTree(List<ListNode> list) {
		int n = list.size();
		TreeNode node;
		if (n >= 3) {
			int mid = n / 2;
			node = new TreeNode(list.get(mid).val);
			node.left = buildTree(list.subList(0, mid));
			node.right = buildTree(list.subList(mid + 1, n));
			return node;
		} else if (n == 2) {
			node = new TreeNode(list.get(1).val);
			node.left = buildTree(list.subList(0, 1));
			return node;
		} else {
			return new TreeNode(list.get(0).val);
		}
	}