LeetCode 103 二叉树的锯齿形层序遍历

1、题目描述

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

2、思路

   2.1 使用 双端队列 对一层进行存储
   2.2 设定一个 isOrderLeft 标记为

class Solution {
public:
    vector<vector<int>> zigzagLevelOrder(TreeNode* root) 
    {
        vector<vector<int>> num;
        if(!root){
            return num;
        }
        //使用队列管理一层节点
        queue<TreeNode*> que;
        //根节点先入队
        que.push(root);
        bool isorderleft = true;
        while(que.size())
        {
            int len = que.size();
            //使用双端队列对一层的节点进行缓存
            deque<int> nums1;
            while(len--)
            {
                TreeNode* tp = que.front();
                que.pop();
                if(isorderleft){
                    nums1.push_back(tp -> val);
                }
                else{
                    //当判断是 从右往左时,用头插法
                    nums1.push_front(tp -> val);
                }
                if(tp -> left){
                    que.push(tp -> left);
                }
                if(tp -> right){
                    que.push(tp -> right);
                }
            }
            isorderleft = !isorderleft;
            num.emplace_back(vector<int>{nums1.begin(), nums1.end()});
        }
        return num;
    }
};

整理不易 你的点赞、关注是对我莫大的鼓励
LeetCode 103 二叉树的锯齿形层序遍历_第1张图片

你可能感兴趣的:(LeetCode,leetcode,算法,职场和发展)