/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ class TreeLevel { public: ListNode* getTreeLevel(TreeNode* root, int dep) { // write code here if (!root || dep < 1) return nullptr; if (dep == 1) return new ListNode(root->val); ListNode* left = getTreeLevel(root->left, dep - 1); ListNode* right = getTreeLevel(root->right, dep - 1); if (!left) return right; if(!right) return left; ListNode* tail = left; while (tail->next) tail = tail->next; tail->next = right; return left; } };