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).
vector<vector<int > > levelOrderBottom(TreeNode *root)
{
vector<vector<int > > result;
if(root == NULL)
{
return result;
}
deque<TreeNode* >myDeque;
myDeque.push_back(root);
myDeque.push_back(NULL);
vector<int> temp;
while(!myDeque.empty())
{
TreeNode* tempNode = myDeque.front();
myDeque.pop_front();
if(tempNode)
{
temp.push_back(tempNode->val);
if(tempNode->left)
{
myDeque.push_back(tempNode->left);
}
if(tempNode->right)
{
myDeque.push_back(tempNode->right);
}
}
else
{
result.push_back(temp);
temp.clear();
if(!myDeque.empty())
{
myDeque.push_back(NULL);
}
}
}
int start = 0;
int end = (int)result.size() - 1;
while(start < end)
{
swap(result[start++], result[end--]);
}
return result;
}
本文介绍了一种从叶子节点到根节点的层次遍历二叉树的方法,并提供了详细的C++实现代码。通过使用双端队列来跟踪节点,实现了从下到上的层次遍历。
227

被折叠的 条评论
为什么被折叠?



