103. 二叉树的锯齿形层次遍历

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

例如:
给定二叉树 [3,9,20,null,null,15,7],

3

/
9 20
/
15 7
返回锯齿形层次遍历如下:

[
[3],
[20,9],
[15,7]
]

思路
1.需要一个变量flag标示打印方向(从左到右还是从右到左)
2.使用一个变量numOfChild标示这一层有多少个节点

#include "TreeNode.h"

class Solution {
public:
    vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
        vector<vector<int>> result;
        deque<TreeNode*> que;
        int flag = 0, numOfChild = 1;
        if (root == NULL) return result;
        que.push_back(root);

        while (!que.empty())
        {
            vector<int> temp;
            for (int i = 0; i < numOfChild; i++)
            {
                TreeNode* node;
                if (flag % 2 == 0)
                {
                    node = que.back();
                    que.pop_back();
                    if (node->left != NULL) que.push_front(node->left);
                    if (node->right != NULL) que.push_front(node->right);
                }
                else
                {
                    node = que.front();
                    que.pop_front();
                    if (node->right != NULL) que.push_back(node->right);
                    if (node->left != NULL) que.push_back(node->left);
                }
                temp.push_back(node->val);
            }
            flag++;
            numOfChild = que.size();
            result.push_back(temp);
        }
        return result;
    }
};

int main(int argc, char* argv[])
{
    string test = "3,9,20,null,null,15,7";
    auto tree = stringToTreeNode(test);
    auto res = Solution().zigzagLevelOrder(tree);
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进...
    vbuer阅读 1,355评论 0 0
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 10,012评论 1 31
  • 上一篇文章讲述了树的概念, 特征以及分类, 旨在让我们理解什么是树, 树的一些常用的概念是什么,树的分类有哪些等。...
    DevCW阅读 6,370评论 4 10
  • 前天2018年7月8日,早晨醒来发现脖子不对劲,想是因为刚换了夏天睡的枕头缘故吧,也就不当一回事,照例出门去游荡,...
    晴天小小猪阅读 3,021评论 0 0
  • 时间真快,眨眼间举家来到水电厂通明苑小区租房已经快八个月了。当时媳妇三个月的产假过去了,正好因工作调动来到了...
    飞与你同行阅读 1,864评论 1 3

友情链接更多精彩内容