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;
     }
 }
Esempio n. 3
0
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);
}