层序遍历
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
if(root == nullptr)
{
return res;
}
//使用一个队列来保存每一行节点
queue<TreeNode*> queue_tree;
if(root->left)
{
queue_tree.push(root->left);
}
if(root->right)
{
queue_tree.push(root->right);
}
vector<int> cen;
cen.push_back(root->val);
res.push_back(cen);
cen.clear();
while(queue_tree.size())
{
int len = queue_tree.size();
for(int i = 0; i < len; ++i)
{
TreeNode* p = queue_tree.front();
if(p->left)
{
queue_tree.push(p->left);
}
if(p->right)
{
queue_tree.push(p->right);
}
queue_tree.pop();
cen.push_back(p->val);
}
res.push_back(cen);
cen.clear();
}
return res;
}