TreeNode *sortedArrayToBST(vector<int> &num) { if (num.size() == 0) { return NULL; } else { return divideAndConquer(num, 0, num.size()); } }
TreeNode *divideAndConquer(vector<int> &num, int l, int r) { if (r - l == 1) { return new TreeNode(num[l]); } else if (r - l == 0) { return NULL; } else { int mid = (l + r) / 2; TreeNode* root = new TreeNode(num[mid]); root -> left = divideAndConquer(num, l, mid); root -> right = divideAndConquer(num, mid+1, r); return root; } }
void main ( ) { int n, i; int **d; int cost; printf("Number of cities = "); scanf("%d", &n); d = (int **)malloc(n * sizeof(int *)); for (i=0; i<n; i++) d[i] = (int *)malloc(n * sizeof(int)); inputs(d,n); // gernerate inputs printf("Divide-and-Conquer TSP : "); cost = divideAndConquer(d,n); printf(" cost = %d\n", cost); printf("Dynamic programming TSP : "); cost = dynamicProgramming(d,n); printf(" cost = %d\n", cost); printf("Greedy TSP : "); cost = greedy(d,n); printf(" cost = %d\n", cost); for (i=0; i<n; ++i) free(d[i]); free(d); }