Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
BintTree vertical sum
//Title of this code #include <iostream> #include <vector> #include <queue> #include <algorithm> #include <map> 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 verticalSum(map<int,int>& m, BinTree* root, int d) { if (!root) return; if (m.find(d) == m.end()) m[d] = 1; else ++m[d]; verticalSum(m, root->left, d - 1); verticalSum(m, root->right, d + 1); } void printVerticalSum(BinTree* root) { map<int,int> m; verticalSum(m, root, 0); for (auto it = m.begin(); it != m.end(); ++it) { cout << it->first << " - " << it->second << endl; } } int main() { BinTree *j = new BinTree(10, NULL, NULL); BinTree *h = new BinTree(14, NULL, NULL); BinTree *g = new BinTree(17, NULL, NULL); BinTree *f = new BinTree(12, j, h); BinTree *e = new BinTree(7, NULL, NULL); BinTree *d = new BinTree(3, NULL, NULL); BinTree *c = new BinTree(15, f, g); BinTree *b = new BinTree(5, d, e); BinTree *root = new BinTree(9, b, c); printVerticalSum(root); }
run
|
edit
|
history
|
help
0
Cuantos dedos
SpiralMatrix
GoF interpreter
CODE K
triplets from vector
dijkstra's algo
ammmma
1028D
multiply two numbers (previous)
CharSearch