给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
解题思路:利用之前二叉树的层次遍历的方法,在temp压入result之前,先用栈保存temp,实际上是完成一个逆序的过程。
vector<vector<int>> Solution::levelOrderBottom(TreeNode* root)
{
vector<vector<int>> result;
vector<int> temp;
queue<TreeNode*> TreeQueue;
stack<vector<int>> TreeStack;
unsigned long cursize = 0;
if(root == NULL)
{
return result;
}
TreeQueue.push(root);
while(TreeQueue.size() != 0)
{
cursize = TreeQueue.size();
for(unsigned int index = 0; index < cursize; index ++)
{
TreeNode* indexnode = TreeQueue.front();
TreeQueue.pop();
temp.push_back(indexnode->val);
if(indexnode->left != NULL)
{
TreeQueue.push(indexnode->left);
}
if(indexnode->right != NULL)
{
TreeQueue.push(indexnode->right);
}
}
TreeStack.push(temp);
temp.clear();
}
while(TreeStack.empty() != true)
{
result.push_back(TreeStack.top());
TreeStack.pop();
}
return result;
}