1+ /*
2+ 2415. Reverse Odd Levels of Binary Tree
3+
4+ LeetCode Daily Question for December 20, 2024
5+
6+ Runtime: 0 ms (beats 100.00%)
7+ Memory: 79.82 MB (beats 57.48%)
8+ */
9+ 10+ /* *
11+ * Definition for a binary tree node.
12+ * struct TreeNode {
13+ * int val;
14+ * TreeNode *left;
15+ * TreeNode *right;
16+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
17+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
18+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
19+ * };
20+ */
21+ class Solution {
22+ public:
23+ TreeNode* reverseOddLevels (TreeNode* root) {
24+ if (root == nullptr ) return root;
25+ deque<TreeNode*> queue;
26+ int level = 0 ;
27+ queue.push_back (root);
28+ while (!queue.empty ()) {
29+ // level order traversal stuff
30+ for (int i = 0 , n = queue.size (); i < n; ++i) {
31+ TreeNode* p = queue.back ();
32+ queue.pop_back ();
33+ if (p->left != nullptr ) queue.push_front (p->left );
34+ if (p->right != nullptr ) queue.push_front (p->right );
35+ }
36+ if (++level & 1 ) { // if level is odd
37+ // reverse node values
38+ for (int i = 0 , n = queue.size (); i < n / 2 ; ++i) {
39+ swap (queue[i]->val , queue[n - i - 1 ]->val );
40+ }
41+ }
42+ }
43+ return root;
44+ }
45+ };
0 commit comments