vector<vector<int> > levelOrderBottom(TreeNode *root) {
vector<TreeNode*> last_level_node;
vector<vector<int>> val_in_level;
if (root == NULL)
{
return val_in_level;
}
last_level_node.push_back(root);
vector<TreeNode*> cur_level_node;
do
{
cur_level_node.clear();
vector<int> val;
for (int i = 0; i < last_level_node.size(); i++)
{
TreeNode* cur_node = last_level_node[i];
TreeNode* left_node = NULL;
TreeNode* right_node = NULL;
if(cur_node != NULL)
{
left_node = cur_node->left;
right_node = cur_node->right;
val.push_back(cur_node->val);
if (left_node != NULL)
{
cur_level_node.push_back(left_node);
}
if (right_node != NULL)
{
cur_level_node.push_back(right_node);
}
}
}
val_in_level.insert(val_in_level.begin(), val);
last_level_node = cur_level_node;
}while (!cur_level_node.empty());
return val_in_level;
}
思路与Binary Tree Level Order Traversal I基本一样,区别是存每一行的数时,一个往容器首添加,一个向容器尾添加。
[LeetCode] Binary Tree Level Order Traversal II
最新推荐文章于 2021-11-18 16:57:58 发布