#include <iostream>
using namespace std;
int array[] = {1,2,3,4,5};
int buildTree(int node,int start,int end,int tree[], int level)
{
for (int i=0; i<level;i++) printf(" ");
printf("start: %d\tend:%d\tnode:%d\t",start,end,node);
if ( start == end )
{
printf("terminal node set to %d\n", array[start] );
tree[node] = array[start];
return array[start];
}
else
{
int mid = ( start + end ) / 2;
printf("recursion\n");
int r=buildTree(2 * node ,mid + 1,end,tree, level+1);
int l=buildTree(2 * node + 1,start,mid,tree, level+1);
for (int i=0; i<level;i++) printf(" ");
//tree[node] = tree[ 2 * node ] + tree[ 2 * node + 1 ];
tree[node] = r +l;
printf ("seting intermeriary node %d to %d\n", node, tree[node]);
return tree[node];
}
}
int main()
{
int tree[100];
for (int i=0; i<100; tree[i++]=-1);
buildTree(0,0,4,tree,0);
for (int i = 0; i < 9; ++i)
{
printf("%d : %d\n",i, tree[i]);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGFycmF5W10gPSB7MSwyLDMsNCw1fTsKCmludCBidWlsZFRyZWUoaW50IG5vZGUsaW50IHN0YXJ0LGludCBlbmQsaW50IHRyZWVbXSwgaW50IGxldmVsKQp7Cglmb3IgKGludCBpPTA7IGk8bGV2ZWw7aSsrKSBwcmludGYoIiAgIik7CiAgICBwcmludGYoInN0YXJ0OiAlZFx0ZW5kOiVkXHRub2RlOiVkXHQiLHN0YXJ0LGVuZCxub2RlKTsKICAgIGlmICggc3RhcnQgPT0gZW5kICkKICAgIHsKICAgICAgICBwcmludGYoInRlcm1pbmFsIG5vZGUgc2V0IHRvICVkXG4iLCBhcnJheVtzdGFydF0gKTsKICAgICAgICB0cmVlW25vZGVdID0gYXJyYXlbc3RhcnRdOyAgCiAgICAgICAgcmV0dXJuIGFycmF5W3N0YXJ0XTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBpbnQgbWlkID0gKCBzdGFydCArIGVuZCApIC8gMjsKICAgICAgICBwcmludGYoInJlY3Vyc2lvblxuIik7CiAgICAgICAgaW50IHI9YnVpbGRUcmVlKDIgKiBub2RlICxtaWQgICsgMSxlbmQsdHJlZSwgbGV2ZWwrMSk7CiAgICAgICAgaW50IGw9YnVpbGRUcmVlKDIgKiBub2RlICsgMSxzdGFydCxtaWQsdHJlZSwgbGV2ZWwrMSk7CgkgICAgZm9yIChpbnQgaT0wOyBpPGxldmVsO2krKykgcHJpbnRmKCIgICIpOwoKICAgICAgICAvL3RyZWVbbm9kZV0gPSB0cmVlWyAyICogbm9kZSBdICsgdHJlZVsgMiAqIG5vZGUgKyAxIF07CiAgICAgICAgdHJlZVtub2RlXSA9IHIgK2w7IAogICAgICAgIHByaW50ZiAoInNldGluZyBpbnRlcm1lcmlhcnkgbm9kZSAlZCB0byAlZFxuIiwgbm9kZSwgdHJlZVtub2RlXSk7CiAgICAgICAgcmV0dXJuIHRyZWVbbm9kZV07CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW50IHRyZWVbMTAwXTsKICAgIGZvciAoaW50IGk9MDsgaTwxMDA7IHRyZWVbaSsrXT0tMSk7CiAgICBidWlsZFRyZWUoMCwwLDQsdHJlZSwwKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTsgKytpKQogICAgewogICAgICAgIHByaW50ZigiJWQgOiAlZFxuIixpLCB0cmVlW2ldKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==