题目描述:
从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。
分析:
借助队列的思想,利用树节点指针遍历整个二叉树,将树节点放在队列中,再利用树节点指针将树节点的值压入到容器中;
完整代码:
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
//声明一个二维容器
vector<vector<int> > array;
//检查输入的合法性
if(pRoot == nullptr)
return array;
//声明一个队列
queue<TreeNode*> data;
//将根节点压入到队列中
data.push(pRoot);
//如果队列不为空
while(!data.empty())
{
//声明一个容器
vector<int> temp;
//声明一个变量,表示队列的长度
int length = data.size();
for(int i = 0; i < length; ++i)
{
//声明一个树节点指针,指向容器的开头
TreeNode *pNode = data.front();
data.pop();
//将当前节点的值压入到容器中
temp.push_back(pNode->val);
//如果左子树不为空
if(pNode->left != nullptr)
data.push(pNode->left);
//如果右子树不为空
if(pNode->right != nullptr)
data.push(pNode->right);
}
array.push_back(temp);
}
//返回最终的结果
return array;
}
};