编辑
2023-12-16
算法题
00
请注意,本文编写于 511 天前,最后修改于 511 天前,其中某些信息可能已经过时。

题目 dfs一下

cpp
class 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); } };

层序遍历一下

cpp
class 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 许可协议。转载请注明出处!