舟山市网站建设_网站建设公司_留言板_seo优化
2026/1/16 13:22:19 网站建设 项目流程

一、题目描述

二、算法原理

思路:在层序遍历的基础上添加一个标志位。

层序遍历的算法实现:

https://blog.csdn.net/2403_84958571/article/details/156873549?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

标志位:

三、代码实现

/** * 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: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { if(root == nullptr) return {}; queue<TreeNode*> que;//队列辅助实现层序遍历 vector<vector<int>> ret;//最终的结果 int num = 0; que.push(root); bool flag = false;//标志位,fase:标识不用逆转数组 while(!que.empty()) { vector<int> tmp; num = que.size(); while(num--) { TreeNode* node = que.front(); tmp.push_back(node->val); if(node->left) que.push(node->left); if(node->right) que.push(node->right); que.pop(); } if(flag)//flag = true { //逆转数组 reverse(tmp.begin(),tmp.end()); flag = false;//下一轮就不用逆转了 } else flag = true; ret.push_back(tmp); } return ret; } };

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询