当前位置: 首页 > news >正文

ip开源网站fpga可以做点什么用广州网站建设哪个好

ip开源网站fpga可以做点什么用,广州网站建设哪个好,专业的营销型网站建设,windows优化大师是电脑自带的吗文章目录 Tag题目来源题目解读解题思路方法一:广度优先搜索方法二:深度优先搜索 写在最后 Tag 【深度优先搜索】【广度优先搜索】【二叉树】【2023-12-15】 题目来源 2415. 反转二叉树的奇数层 题目解读 反转二叉树奇数层的节点。 解题思路 对于二叉…

文章目录

  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:广度优先搜索
    • 方法二:深度优先搜索
  • 写在最后

Tag

【深度优先搜索】【广度优先搜索】【二叉树】【2023-12-15】


题目来源

2415. 反转二叉树的奇数层


题目解读

反转二叉树奇数层的节点。


解题思路

对于二叉树中的节点反转,我们只需要交换节点的值。通常有广度优先搜索和深度优先搜索两种解决方法。

方法一:广度优先搜索

思路

按层遍历二叉树,将奇数层的节点都记录下来,如果当前的层是奇数层,就交换节点数组中的节点。

算法

在具体实现中,通过维护一个 bool 变量 isOdd 来记录当前层是否是奇数层。初始化 isOdd = false,因为广搜从根节点开始,这一层是 0 层当做偶数层。每遍历完一层之后更新 isOdd = !isOdd,下方实现中使用的是异或运算来更改 isOdd

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* reverseOddLevels(TreeNode* root) {queue<TreeNode*> q;q.push(root);bool isOdd = false;while (!q.empty()) {int sz = q.size();vector<TreeNode*> arr;for (int i = 0; i < sz; ++i) {TreeNode* node = q.front();q.pop();if (isOdd) {arr.push_back(node);}if (node->left) { // 完美二叉树,有左子树一定也有右子树q.push(node->left);q.push(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;}
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 是二叉树中节点个数,每个节点都要被遍历一次。

空间复杂度: O ( n ) O(n) O(n),用数组记录二叉树的每一层的节点数,某一层最多有 ⌈ n 2 ⌉ \lceil{\frac{n}{2}}\rceil 2n 个节点,因此空间复杂度为 O ( n ) O(n) O(n)

方法二:深度优先搜索

思路

核心依然是交换值,通过递归左右子树实现。

算法

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public: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);}TreeNode* reverseOddLevels(TreeNode* root) {dfs(root->left, root->right, true);return root;}
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 是二叉树中节点个数,每个节点都要被遍历一次。

空间复杂度: O ( l o g n ) O(logn) O(logn)


写在最后

如果您发现文章有任何错误或者对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度的方法,欢迎评论区交流。

最后,感谢您的阅读,如果有所收获的话可以给我点一个 👍 哦。

http://www.yayakq.cn/news/176248/

相关文章:

  • 网站建设的图片怎么加水印wordpress模板 站长
  • 网站改手机版网站开发包
  • 中学网站建设工作实施方案企业信息系统规划的含义
  • 优质的小企业网站建设四川省四川省住房和城乡建设厅网站
  • 网络营销案例分析范文南宁seo外包要求
  • 公司请外包做的网站怎么维护wordpress 站点地址
  • 南京高端网站制作公司四川掌上电力app下载
  • ps做设计想接私活在什么网站国企央企招聘2022
  • 网站建设中的财务预算狮岭网站建设
  • 到国外建网站计算机网站开发就业形势
  • 正规专业的互联网代做毕业设计网站在线做行测的网站
  • 怎样建设网站是什么上海百度推广平台
  • hfs网络文件服务器可以做网站大良营销网站建设机构
  • 打开网站速度网站排名软件多浏览器
  • 如何查网站是哪个公司做的网站建设的客户需求调查与分析
  • 广州网站开发平台服务好质量好的app开发
  • 站点提交seo的实现方式
  • 网页制作网站花店热门行业
  • 做网站最小的字体是多少钱有做网站运营的吗
  • 网站怎么做搜索引擎网页制作教程的应用领域
  • 网站托管维护防止做网站的人修改数值
  • 如何开始做网站郑州百度推广代理公司
  • 邢台专业网站建设公司最新的域名
  • 网站建设北京贵漫画网站php源码
  • wordpress 名片插件整站优化温州怎么做?
  • 整改网站建设情况wordpress 找回密码邮件错误
  • 内网代理ip建设网站怎么用wordpress打开网站吗
  • 网站绝对地址英文版wordpress主题
  • 建设银行jo 办网站用卡做调查问卷的网站
  • 廊坊网站推广公司ps做的网站保存不了jpg