LeetCode——Binary Tree Level Order Traversal II

来源:互联网 发布:淘宝刷单任务书模板 编辑:程序博客网 时间:2024/05/17 08:04

题目:
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   7return its bottom-up level order traversal as:[  [15,7],  [9,20],  [3]]

解答:

/** * 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>> levelOrderBottom(TreeNode* root) {        if (!root) {            vector<vector<int>> rtn;            return rtn;        }        stack<vector<int>*> myStack;        list<TreeNode*> a;        list<TreeNode*> b;        list<TreeNode*> *pCurLayer = &a;        list<TreeNode*> *pNextLayer = &b;        pCurLayer->push_back(root);        while (!pCurLayer->empty()) {            vector<int> *pVec = new vector<int>;            for (list<TreeNode*>::iterator it = pCurLayer->begin(); it != pCurLayer->end(); ++it) {                if ((*it)->left) {                    pNextLayer->push_back((*it)->left);                }                if ((*it)->right) {                    pNextLayer->push_back((*it)->right);                }                pVec->push_back((*it)->val);            }            myStack.push(pVec);            list<TreeNode*> *tmp = pCurLayer;            pCurLayer = pNextLayer;            pNextLayer = tmp;            pNextLayer->clear();        }        vector<vector<int>> rtn;        while (!myStack.empty()) {            vector<int> *pVec = myStack.top();            rtn.push_back(*pVec);            delete pVec;            myStack.pop();        }        return rtn;    }};
0 0
原创粉丝点击