zoukankan      html  css  js  c++  java
  • binary-tree-level-order-traversal I、II——输出二叉树的数字序列

    I

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

    For example:
    Given binary tree{3,9,20,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7
    

    return its level order traversal as:

    [
      [3],
      [9,20],
      [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}".
     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> > levelOrder(TreeNode *root) {
    13         vector<vector<int>> res;
    14         if(root==NULL) return res;
    15         queue<TreeNode*> q;
    16         q.push(root);
    17         while(!q.empty()){
    18             int n=q.size();
    19             vector<int> v;
    20             for(int i=0;i<n;i++){
    21                 TreeNode *cur=q.front();
    22                 q.pop();
    23                 v.push_back(cur->val);
    24                 if(cur->left!=NULL)
    25                     q.push(cur->left);
    26                 if(cur->right!=NULL)
    27                     q.push(cur->right);
    28             }
    29             res.push_back(v);
    30         }
    31         return res;
    32     }
    33 };

    II

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

    For example:
    Given binary tree{3,9,20,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7
    

    return its bottom-up level order traversal as:

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

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

     

    先将结果v存入stack中,最后在从stack倒入res形成倒序,未找到其他好的方法

     

     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> > levelOrderBottom(TreeNode *root) {
    13         vector<vector<int>> res;
    14         if(root==NULL) return res;
    15         stack<vector<int>> s;
    16         queue<TreeNode*> q;
    17         q.push(root);
    18         while(!q.empty()){
    19             int n=q.size();
    20             vector<int> v;
    21             for(int i=0;i<n;i++){
    22                 TreeNode *cur=q.front();
    23                 q.pop();
    24                 v.push_back(cur->val);
    25                 if(cur->left!=NULL)
    26                     q.push(cur->left);
    27                 if(cur->right!=NULL)
    28                     q.push(cur->right);
    29                 
    30             }
    31             s.push(v);
    32         }
    33         while(!s.empty()){
    34             res.push_back(s.top());
    35             s.pop();
    36         }
    37         return res;
    38     }
    39 };
  • 相关阅读:
    vba Application.OnTime 定时器
    Linq to XML
    Jquery Ajax+.ashx Json数据格式
    存储过程
    Jquery Ajax +.ashx XML数据格式
    原生态JS  图片滚动
    Standup Timer的MVC模式及项目结构分析
    android的Handler
    Microsoft Office Sharepoint Server 2007数据库日志文件逐渐增大处理笔记
    windows 网络编程学习Winsock API
  • 原文地址:https://www.cnblogs.com/zl1991/p/7018393.html
Copyright © 2011-2022 走看看