美文网首页
103. 二叉树的锯齿形层次遍历

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

作者: HITZGD | 来源:发表于2018-11-30 14:31 被阅读0次

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

例如:
给定二叉树 [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;
}

相关文章

  • LeetCodeDay45 —— 二叉树的锯齿形层次遍历★☆

    103. 二叉树的锯齿形层次遍历 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一...

  • leetcode--103-Z字形层次遍历

    103. 二叉树的锯齿形层次遍历 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一...

  • 力扣题解(树)

    100. 相同的树 101. 对称二叉树 102. 二叉树的层次遍历 103. 二叉树的锯齿形层次遍历 104. ...

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

    LeetCode-103-二叉树的锯齿形层序遍历 103. 二叉树的锯齿形层序遍历[https://leetcod...

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

    103. 二叉树的锯齿形层次遍历 解决方案:稍微修改一下层次遍历,每次先将右子树入队,后将左子树入队,就能得到反向...

  • 每天进步一点点【2019.8.28】

    一、二叉树的锯齿形层次遍历【leetcode103】 题目描述:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即...

  • 栈-N103-二叉树的锯齿形层次遍历

    题目 概述:给定一个二叉树,返回它的锯齿形层次遍历和一般的层次遍历不同,锯齿形层次遍历是在奇数层从左往右遍历,偶数...

  • 面试题整理

    头条: 103.二叉树的锯齿形层次遍历CMS和G1的区别 高德: AQS中如何实现锁的可重入线程池,流水号生成器,...

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

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

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

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

网友评论

      本文标题:103. 二叉树的锯齿形层次遍历

      本文链接:https://www.haomeiwen.com/subject/emlhcqtx.html