leetcode---binary-tree-level-order-traversal-ii---树层次遍历

来源:互联网 发布:javascript setdate 编辑:程序博客网 时间:2024/05/19 13:05

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.

OJ’s Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where ‘#’ signifies a path terminator where no node exists below.
Here’s an example:
1
/ \
2 3
/
4
\
5
The above binary tree is serialized as”{1,2,3,#,#,4,#,#,5}”.

/** * 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)     {        queue<TreeNode *> q;        vector<vector<int> > ans;        if(!root)            return ans;        q.push(root);        stack<vector<int> > s;        while(!q.empty())        {            vector<int> v;            queue<TreeNode *> q1;            while(!q.empty())            {                TreeNode *p = q.front();                q.pop();                v.push_back(p->val);                if(p->left)                    q1.push(p->left);                if(p->right)                    q1.push(p->right);            }            q = q1;            if(!v.empty())                s.push(v);        }        while(!s.empty())        {            vector<int> v = s.top();            s.pop();            ans.push_back(v);        }        return ans;    }};
阅读全文
0 0
原创粉丝点击