题目描述:
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] ]
思路:先层序遍历二叉树,再将得到的结果翻转。
代码:
vector<vector<int> > levelOrderBottom(TreeNode *root) {
vector<vector<int> > result;
vector<int> sequence;
TreeNode * flag = new TreeNode(0);
queue<TreeNode *> treenode_queue;
if(root == NULL)
return result;
treenode_queue.push(root);
treenode_queue.push(flag);
while(treenode_queue.size() >= 1)
{
TreeNode * node = treenode_queue.front();
treenode_queue.pop();
if(node == flag)
{
result.push_back(sequence);
sequence.clear();
if(treenode_queue.empty())
break;
treenode_queue.push(flag);
}
else
{
sequence.push_back(node->val);
if(node->left != NULL)
treenode_queue.push(node->left);
if(node->right != NULL)
treenode_queue.push(node->right);
}
}
reverse(result.begin(),result.end());
return result;
}Binary Tree Level Order Traversal II
原文地址:http://blog.csdn.net/yao_wust/article/details/41241985