zoukankan      html  css  js  c++  java
  • (二叉树 BFS) leetcode103. Binary Tree Zigzag Level Order Traversal

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).

    For example:
    Given binary tree [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    return its zigzag level order traversal as:

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

    ---------------------------------------------------------------------------------------------------------------------

    这个是在leetcode102. Binary Tree Level Order Traversal的基础上拓展来的,只要加一个判断就行。

    C++代码:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
            if(!root) return {};
            queue<TreeNode*> q;
            q.push(root);
            vector<vector<int> > vec;
            bool flag = true;
            while(!q.empty()){
                vector<int> v;
                for(int i = q.size(); i > 0; i--){
                    auto 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());
                flag = !flag;
                vec.push_back(v);
            }
            return vec;
        }
    };
  • 相关阅读:
    LeetCode 773. Sliding Puzzle
    oracle latch工作原理
    Oracle关于锁的几种类型和参数
    Java的反射机制
    JAVA多线程与并发学习总结
    Spring 概念详解
    Spring的AOP
    spring面试题 对DI , AOP概念的理解
    双11的架构
    Java线程的定义
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10792718.html
Copyright © 2011-2022 走看看