开辟两个堆, 利用BFS 来得到结果,最后注意题目要求的顺序。
代码
class Solution
{
public:
vector<vector<int> > levelOrderBottom(TreeNode *root)
{
vector<vector<int> > result;
if(root==NULL)
return result;
queue<TreeNode*> queue_pop, queue_push;
queue_pop.push(root);
vector<int> level;
while(!queue_pop.empty())
{
TreeNode *tempNode;
tempNode = queue_pop.front();
level.push_back(tempNode->val);
queue_pop.pop();
if(tempNode->left)
queue_push.push(tempNode->left);
if(tempNode->right)
queue_push.push(tempNode->right);
if(queue_pop.empty())
{
result.push_back(level);
level.clear();
swap(queue_push, queue_pop);
}
}
//反转得到最终结果
reverse(result.begin(), result.end());
return result;
}
};