http://www.geeksforgeeks.org/convert-a-given-tree-to-sum-tree/
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <queue> 5 #include <stack> 6 #include <string> 7 #include <fstream> 8 using namespace std; 9 10 struct node { 11 int data; 12 struct node *left, *right; 13 node() : data(0), left(NULL), right(NULL) { } 14 node(int d) : data(d), left(NULL), right(NULL) { } 15 }; 16 17 void prints(node *root) { 18 if (!root) return; 19 prints(root->left); 20 cout << root->data << " "; 21 prints(root->right); 22 } 23 24 int tosum(node *root) { 25 if (!root) return 0; 26 int old = root->data; 27 root->data = tosum(root->left) + tosum(root->right); 28 return root->data + old; 29 } 30 31 int main() { 32 node *root = new node(10); 33 root->left = new node(-2); 34 root->right = new node(6); 35 root->left->left = new node(8); 36 root->left->right = new node(-4); 37 root->right->left = new node(7); 38 root->right->right = new node(5); 39 tosum(root); 40 prints(root); 41 return 0; 42 }