#include #include #include #include using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} }; class Solution { public: vector > verticalTraversal(TreeNode* root); }; vector > Solution::verticalTraversal(TreeNode* root) { vector < vector > rv; return rv; } int main() { vector N; TreeNode *t; int n; int i, l, r, j; vector < vector > rv; Solution s; while (cin >> n) { /* Read in the vals of the tree. If a val is -1, the node is NULL */ if (n >= 0) { t = new TreeNode(n); N.push_back(t); } else { N.push_back(nullptr); } } for (i = 0; i < N.size(); i++) { /* Set up the pointers of the tree. */ if (N[i] != nullptr) { l = 2*i + 1; if (l < N.size()) N[i]->left = N[l]; l++; if (l < N.size()) N[i]->right = N[l]; } } rv = s.verticalTraversal(N[0]); /* Call verticalTraversal on the root */ for (i = 0; i < rv.size(); i++) { // Print out the return value - each vector on its own line. for (j = 0; j < rv[i].size(); j++) printf("%d ", rv[i][j]); printf("\n"); } return 0; }