fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int array[] = {1,2,3,4,5};
  5.  
  6. int buildTree(int node,int start,int end,int tree[], int level)
  7. {
  8. for (int i=0; i<level;i++) printf(" ");
  9. printf("start: %d\tend:%d\tnode:%d\t",start,end,node);
  10. if ( start == end )
  11. {
  12. printf("terminal node set to %d\n", array[start] );
  13. tree[node] = array[start];
  14. return array[start];
  15. }
  16. else
  17. {
  18. int mid = ( start + end ) / 2;
  19. printf("recursion\n");
  20. int r=buildTree(2 * node ,mid + 1,end,tree, level+1);
  21. int l=buildTree(2 * node + 1,start,mid,tree, level+1);
  22. for (int i=0; i<level;i++) printf(" ");
  23.  
  24. //tree[node] = tree[ 2 * node ] + tree[ 2 * node + 1 ];
  25. tree[node] = r +l;
  26. printf ("seting intermeriary node %d to %d\n", node, tree[node]);
  27. return tree[node];
  28. }
  29. }
  30.  
  31. int main()
  32. {
  33. int tree[100];
  34. for (int i=0; i<100; tree[i++]=-1);
  35. buildTree(0,0,4,tree,0);
  36. for (int i = 0; i < 9; ++i)
  37. {
  38. printf("%d : %d\n",i, tree[i]);
  39. }
  40. return 0;
  41. }
  42.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
start: 0	end:4	node:0	recursion
  start: 3	end:4	node:0	recursion
    start: 4	end:4	node:0	terminal node set to 5
    start: 3	end:3	node:1	terminal node set to 4
  seting intermeriary node 0 to 9
  start: 0	end:2	node:1	recursion
    start: 2	end:2	node:2	terminal node set to 3
    start: 0	end:1	node:3	recursion
      start: 1	end:1	node:6	terminal node set to 2
      start: 0	end:0	node:7	terminal node set to 1
    seting intermeriary node 3 to 3
  seting intermeriary node 1 to 6
seting intermeriary node 0 to 15
0 : 15
1 : 6
2 : 3
3 : 3
4 : -1
5 : -1
6 : 2
7 : 1
8 : -1