LeetCode Binary Tree Level Order Traversal II

来源:互联网 发布:魔兽世界数据库安卓版 编辑:程序博客网 时间:2024/06/16 17:13

题目:

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],]

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int> > levelOrderBottom(TreeNode *root) {        vector<vector<int>> i_vec_vec;        stack<vector<int>> i_stk_vec;        if(root == NULL)         return i_vec_vec;        queue<queue<TreeNode*>> node_que_que;        queue<TreeNode*> node_que;         node_que.push(root);        node_que_que.push(node_que);        while(!node_que_que.empty()) {        queue<TreeNode*> out_que;        queue<TreeNode*> in_que;        vector<int> in_vec;        out_que = node_que_que.front();        while(!out_que.empty()) {        TreeNode *tmp = out_que.front();        in_vec.push_back(tmp->val);        if(tmp->left)        in_que.push(tmp->left);        if(tmp->right)        in_que.push(tmp->right);        out_que.pop();           }        node_que_que.pop();        i_stk_vec.push(in_vec);        if(!in_que.empty())        node_que_que.push(in_que);         }        while(!i_stk_vec.empty()) {        vector<int> ivec = i_stk_vec.top();        i_stk_vec.pop();        i_vec_vec.push_back(ivec);                }        return i_vec_vec;    }};



0 0