zoukankan      html  css  js  c++  java
  • 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,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7
    

    return its zigzag level order traversal as:

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

    confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.


    OJ's Binary Tree Serialization:

    The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

    Here's an example:

       1
      / 
     2   3
        /
       4
        
         5
    
    The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".
    PS:二叉树分层输出,BFS并且记录翻转情况
     
     1 /**
     2  * Definition for binary tree
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
    13         vector<vector<int>> res;
    14         if(root==NULL) return res;
    15         queue<TreeNode*> q;
    16         q.push(root);
    17         bool reverse=false;
    18         while(!q.empty()){
    19             vector<int> v;
    20             int size=q.size();
    21             for(int i=0;i<size;++i){
    22                 TreeNode *cur=q.front();
    23                 q.pop();
    24                 v.push_back(cur->val);
    25                 if(cur->left!=NULL) q.push(cur->left);
    26                 if(cur->right!=NULL) q.push(cur->right);
    27             }
    28             if(reverse){
    29                 
    30                 vector<int> tmp;
    31                 for(int i=v.size()-1;i>=0;--i){
    32                     tmp.push_back(v[i]);
    33                 }
    34                 res.push_back(tmp);
    35             }else{
    36                 res.push_back(v);
    37             }
    38             reverse=!reverse;
    39         }
    40         return res;
    41     }
    42 };
  • 相关阅读:
    hdu2328 Corporate Identity
    hdu1238 Substrings
    hdu4300 Clairewd’s message
    hdu3336 Count the string
    hdu2597 Simpsons’ Hidden Talents
    poj3080 Blue Jeans
    poj2752 Seek the Name, Seek the Fame
    poj2406 Power Strings
    hust1010 The Minimum Length
    hdu1358 Period
  • 原文地址:https://www.cnblogs.com/zl1991/p/7045710.html
Copyright © 2011-2022 走看看