107. Binary Tree Level Order Tra

2017-01-07  本文已影响0人  juexin

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,null,null,15,7],
    3
    / \
   9  20
      / \
    15  7

return its bottom-up level order traversal as:
[ [15,7], [9,20], [3] ]

class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
         vector<vector<int>> arr;
        if(root==NULL)
          return arr;
        queue<TreeNode *> q;
        q.push(root);
        while(!q.empty())
        {
            int i = 0;
            int height = q.size();
            vector<int> c;
            while(i++<height)
            {
                TreeNode* t = q.front();
                q.pop();
                c.push_back(t->val);
                if(t->left)
                  q.push(t->left);
                if(t->right)
                  q.push(t->right);
            }
            arr.push_back(c);
        }
        int n = arr.size();
        for(int i=0;i<n/2;i++)
        {
            vector<int> temp = arr[i];
            arr[i] = arr[n-1-i];
            arr[n-1-i] = temp;
        }
        return arr;
    }
};
上一篇下一篇

猜你喜欢

热点阅读