【力扣刷题练习】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翻转顺序最终实现锯齿形层次遍历。

相关推荐
光影少年1 分钟前
react的diff算法和vue的diff算法区别
vue.js·算法·react.js
Queenie_Charlie4 分钟前
二分匹配
c++·算法·二分匹配
历程里程碑4 分钟前
链表--排序链表
大数据·数据结构·算法·elasticsearch·链表·搜索引擎·排序算法
IT猿手6 分钟前
基于动态三维环境下的Q-Learning算法无人机自主避障路径规划研究,MATLAB代码
算法·matlab·无人机·动态路径规划·多无人机动态避障路径规划
美式请加冰9 分钟前
栈的介绍和使用(算法)
数据结构·算法·leetcode
不染尘.10 分钟前
排序算法详解2
数据结构·c++·算法·排序算法
cm65432011 分钟前
C++代码切片分析
开发语言·c++·算法
重生之我是Java开发战士18 分钟前
【递归、搜索与回溯】FloodFill算法:图像渲染,岛屿数量,岛屿的最大面积,被围绕的区域,太平洋大西洋水流问题,扫雷游戏,衣橱整理
算法·leetcode·深度优先
YUANQIANG202419 分钟前
PPO算法典型思路
算法·机器学习
twc82920 分钟前
大模型评估指标简要说明
算法·大模型·bleu