【力扣刷题练习】103. 二叉树的锯齿形层序遍历

题目描述:

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

题目解答:

cpp 复制代码
class Solution {
public:
    vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
        queue<TreeNode*> q;
        if (root != nullptr)
            q.push(root);
        bool flag = false;
        vector<vector<int>> ans;
        while (!q.empty()) {
            int size = q.size();
            vector<int> v;
            for (int i = 0; i < size; i++) {
                TreeNode* t = q.front();
                q.pop();
                v.push_back(t->val);
                if (t->left)
                    q.push(t->left);
                if (t->right)
                    q.push(t->right);
            }
            if(flag)
                reverse(v.begin(),v.end());
            ans.emplace_back(v);
            flag = !flag;
        }
        return ans;
    }
};

题目思路:

本题思路由【力扣刷题练习】102. 二叉树的层序遍历演变而来

在原有思路以及代码下增加一个布尔型flag变量用以控制遍历顺序,每隔一层调用一次reverse翻转顺序最终实现锯齿形层次遍历。

相关推荐
迷途之人不知返5 小时前
数据结构之,栈与队列
数据结构
MATLAB代码顾问6 小时前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
高山上有一只小老虎7 小时前
字符串字符匹配
java·算法
愚润求学8 小时前
【动态规划】专题完结,题单汇总
算法·leetcode·动态规划
MOONICK8 小时前
数据结构——哈希表
数据结构·哈希算法·散列表
林太白8 小时前
跟着TRAE SOLO学习两大搜索
前端·算法
ghie90908 小时前
图像去雾算法详解与MATLAB实现
开发语言·算法·matlab
云泽8088 小时前
从三路快排到内省排序:探索工业级排序算法的演进
算法·排序算法
weixin_468466859 小时前
遗传算法求解TSP旅行商问题python代码实战
python·算法·算法优化·遗传算法·旅行商问题·智能优化·np问题
·白小白9 小时前
力扣(LeetCode) ——43.字符串相乘(C++)
c++·leetcode