[leetcode] Binary Tree Level Order Traversal 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],
]

[leetcode] Binary Tree Level Order Traversal的方法相同,利用一个队列来完成层次遍历,最后在把结果反转过来即可。

代码如下:

 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         // Note: The Solution object is instantiated only once and is reused by each test case.
14        
15         vector<vector<int>> result;
16         vector<vector<int>> result2;
17         if(root==NULL) return result;
18         vector<int> temp;
19         queue<TreeNode * > q;
20         q.push(NULL);
21         q.push(root);
22         while(q.size()>1)
23         {
24             if(q.front()==NULL)
25             {
26                 q.pop();
27                 q.push(NULL);
28                 if(temp.size()!=0) result.push_back(temp);
29                 temp.clear();
30             }
31             else
32             {
33                 if(q.front()->left!=NULL)q.push(q.front()->left);
34                 if(q.front()->right!=NULL)q.push(q.front()->right);
35                 temp.push_back(q.front()->val);
36                 q.pop();
37             }
38         }
39         if(temp.size()!=0) result.push_back(temp);
40         for(int i = result.size() - 1; i >= 0; i--) result2.push_back(result.at(i));
41         return result2;
42         
43     }
44 };
原文地址:https://www.cnblogs.com/jostree/p/3710714.html