题目 dfs一下
cppclass Solution {
public:
TreeNode* reverseOddLevels(TreeNode* root) {
dfs(root->left, root->right, true);
return root;
}
void dfs(TreeNode *root1, TreeNode *root2, bool isOdd) {
if (root1 == nullptr) {
return;
}
if (isOdd) {
swap(root1->val, root2->val);
}
dfs(root1->left, root2->right, !isOdd);
dfs(root1->right, root2->left, !isOdd);
}
};
层序遍历一下
cppclass Solution {
public:
TreeNode* reverseOddLevels(TreeNode* root) {
queue<TreeNode *> qu;
qu.emplace(root);
bool isOdd = false;
while (!qu.empty()) {
int sz = qu.size();
vector<TreeNode *> arr;
for (int i = 0; i < sz; i++) {
TreeNode *node = qu.front();
qu.pop();
if (isOdd) {
arr.emplace_back(node);
}
if (node->right||node -> left) {
qu.emplace(node->left);
qu.emplace(node->right);
}
}
if (isOdd) {
for (int l = 0, r = sz - 1; l < r; l++, r--) {
swap(arr[l]->val, arr[r]->val);
}
}
isOdd ^= true;
}
return root;
}
};
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!