Binary Tree Level Order Traversal II

来源:互联网 发布:java的equals方法 编辑:程序博客网 时间:2024/06/06 05:03

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.

先简单的按顺序打印的求个倒。

class Solution {  public:      vector<vector<int> > levelOrderBottom(TreeNode *root) {          vector< vector<int> > result;          if(root==NULL)          {              return result;          }                    queue<TreeNode *> queue_tree_1; //变量名可以取直观点的,比如first, second          queue<TreeNode *> queue_tree_2;                    queue_tree_1.push(root);          TreeNode *currentNode;                    vector<int> v; //尽量减少变量          while(!queue_tree_1.empty())          {              while(!queue_tree_1.empty())              {                  currentNode = queue_tree_1.front();                  if(currentNode->left!=NULL)                      queue_tree_2.push(currentNode->left);                  if(currentNode->right!=NULL)                      queue_tree_2.push(currentNode->right);                                        v.push_back(currentNode->val);                  queue_tree_1.pop();              }              if(!v.empty())  //这里出错了              {                  result.push_back(v);                  v.clear();              }                        while(!queue_tree_2.empty())              {                  currentNode = queue_tree_2.front();                  if(currentNode->left!=NULL)                      queue_tree_1.push(currentNode->left);                  if(currentNode->right!=NULL)                      queue_tree_1.push(currentNode->right);                                    v.push_back(currentNode->val);                  queue_tree_2.pop();              }                            if(!v.empty())              {                  result.push_back(v);                  v.clear();              }                    }          vector< vector<int> > final_res;        for(int i=result.size()-1; i>=0; i--)        {            final_res.push_back(result[i]);        }                return final_res;               }  };  


0 0