vector<vector<int> > Print(TreeNode* pRoot)
{
//vector嵌套表达一个二维空间
vector<vector<int> > ans;
//检测有效性
if (pRoot == NULL)
{
return ans;
}
//对列容器 保证先访问左子树 然后右子树
queue<TreeNode*> q;
//先访问第一层
q.push(pRoot);
while(!q.empty())
{
//size 记录该层应该访问几个节点
int size = q.size();
vector<int> levelelem;
//先访问一层
while(size--)
{
TreeNode* t = q.front();
q.pop();
levelelem.push_back(t->val);
//访问一层的同时将下层的数据保存起来
if (t->left != NULL)
{
q.push(t->left);
}
if (t->right != NULL)
{
q.push(t->right);
}
}
//访问完一层将一层数据保存起来
ans.push_back(levelelem);
}
return ans;
}
关于二叉树层遍历的思考
最新推荐文章于 2020-12-22 15:56:26 发布