Day128 | 灵神 | 二叉树 | 反转二叉树的奇数层

2415.反转二叉树的奇数层

2415. 反转二叉树的奇数层 - 力扣(LeetCode)

思路:

层序遍历的话就交换对应节点的值吧,就如果是奇数层的话,就把节点都弄到vector里面,然后反转节点的值

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
public:
TreeNode* reverseOddLevels(TreeNode* root) {
queue<TreeNode *> q;
if(root==nullptr)
return root;
q.push(root);
int count=0;
while(!q.empty())
{
int size=q.size();
vector<TreeNode*> arr;
for(int i=0;i<size;i++)
{
TreeNode *t=q.front();
q.pop();
if(count%2==1)
arr.push_back(t);
if(t->left)
q.push(t->left);
if(t->right)
q.push(t->right);
}
if(count%2==1)
for(int l=0,r=arr.size()-1;l<r;l++,r--)
swap(arr[l]->val,arr[r]->val);
count++;
}
return root;
}
};