#include #include struct tree { tree tptr left; tree tptr right; int value; }; tree tptr create_tree(int deep) { tree tptr res = new tval tree; res->value = 1; if (deep <= 1) { res->left = NULL; res->right = NULL; } else { res->left = create_tree(deep-1); res->right = create_tree(deep-1); } return res; } tfun tree create_tree2 (int deep) { tree tptr tp = create_tree(deep); tval tree t = *tp; return t; } tfun int tsum (tree tptr t) { tval int leftSum, rightSum; if (!t->left) { leftSum = t->value; } else { leftSum = tsum(t->left); } if (!t->right) { rightSum = t->value; } else { rightSum = tsum(t->right); } return (int)leftSum + (int)rightSum; } tfun int main (int argc, char* argv[]) { tval tree t = create_tree2(8); printf("sum = %d\n", (int)tsum(&t)); return 0; }