Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
ReplaceGreaterSum in BST
//Title of this code #include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; struct BinTree { int data; BinTree *left; BinTree *right; BinTree(int d, BinTree* l, BinTree* r): data(d), left(l), right(r) {} }; void printLevels(BinTree* root) { queue<BinTree*> *nodesCur = new queue<BinTree*>(); queue<BinTree*> *nodesNext = new queue<BinTree*>(); nodesCur->push(root); do { while (!nodesCur->empty()) { BinTree *cur = nodesCur->front(); nodesCur->pop(); cout << cur->data << " "; if (cur->left) nodesNext->push(cur->left); if (cur->right) nodesNext->push(cur->right); } cout << endl; swap(nodesCur, nodesNext); } while (!nodesCur->empty()); cout << endl; } int replaceGreaterSum(BinTree* root) { if (!root) return 0; int lesserSum = replaceGreaterSum(root->left); int gereaterSum = replaceGreaterSum(root->right); int tmp = root->data; root->data += gereaterSum; return lesserSum + gereaterSum + tmp; } int main() { BinTree *ggg = new BinTree(6, NULL, NULL); BinTree *gg = new BinTree(18, NULL, ggg); BinTree *ddd = new BinTree(1, NULL, NULL); BinTree *dd = new BinTree(2, ddd, NULL); BinTree *hh = new BinTree(13, NULL, NULL); BinTree *j = new BinTree(10, NULL, NULL); BinTree *h = new BinTree(14, hh, NULL); BinTree *g = new BinTree(17, NULL, gg); BinTree *f = new BinTree(12, j, h); BinTree *e = new BinTree(7, NULL, NULL); BinTree *d = new BinTree(3, dd, NULL); BinTree *c = new BinTree(15, f, g); BinTree *b = new BinTree(5, d, e); BinTree *root = new BinTree(9, b, c); printLevels(root); replaceGreaterSum(root); printLevels(root); }
run
|
edit
|
history
|
help
0
TwoVarRegression
Rotate array
12hours Clock c++
Hello
PLoshtina na krug
anagram
weird cast in qt moc files
Samosa
Best way for getting more precision no.
offsetof