天天看點

Binary Tree Level Order Traversal II

/**

 * Definition for a binary tree node.

 * struct TreeNode {

 *     int val;

 *     TreeNode *left;

 *     TreeNode *right;

 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}

 * };

 */

class Solution {

public:

    vector<vector<int> > result;

    void solve(TreeNode*root,int dep)

    {

        if(root==NULL)

        return ;

        if(dep==result.size())//目前result裡面沒有元素,是兩層向量的結構

        {vector<int>temp;

         result.push_back(temp) ;  //是以必須push一個向量容器進去。如果和上一個節點在同一層,則隻用第一個節點添加向量容器,後面的直接添加

        }

        result[dep].push_back(root->val);//向目前容器裡面添加元素

        if(root->left!=NULL)

        solve(root->left,dep+1);

        if(root->right!=NULL)

        solve(root->right,dep+1);

    }

    vector<vector<int>> levelOrderBottom(TreeNode* root) {

        solve(root,0);

        reverse(result.begin(),result.end());

        return result;

        //return vector<vector<int>>(result.rbegin(),result.rend());

};