Binary Tree Level Order Traversal II

来源:互联网 发布:杨颖同款秀禾服淘宝 编辑:程序博客网 时间:2024/04/29 18:44

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.


/** * 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> > qh;        vector<int> arr(0);        stack<vector<int>> tmpstack;        queue<TreeNode*> q;        int cnt=1,i;        int leaves=0;                TreeNode *p = root;        if(p==NULL) return qh;        q.push(p);        while(!q.empty()){            arr.clear();            for(i=0,leaves=0;i<cnt;i++){                p=q.front();                arr.push_back(p->val);                q.pop();                if(p->left!=NULL) {                    q.push(p->left);                    leaves++;                }                if(p->right!=NULL) {                    q.push(p->right);                    leaves++;                }            }            cnt=leaves;            tmpstack.push(arr);        }        while(!tmpstack.empty()){            qh.push_back(tmpstack.top());            tmpstack.pop();        }        return qh;    }};


0 0