题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路:按层打印二叉树,即二叉树的层序遍历。使用队列即可。
/*
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> > tree;
if (NULL == pRoot){
return tree;
}
int level = 0;
queue<TreeNode*> nodeQueue;
vector<int> valueVec;
TreeNode *pNode;
nodeQueue.push(pRoot);
while (!nodeQueue.empty()){
level = nodeQueue.size();
valueVec.clear();
for (int i = 0; i < level; i++){
pNode = nodeQueue.front();
valueVec.push_back(pNode->val);
if (pNode->left){
nodeQueue.push(pNode->left);
}
if (pNode->right){
nodeQueue.push(pNode->right);
}
nodeQueue.pop();
}
tree.push_back(valueVec);
}
return tree;
}
};
二叉树层序遍历

本文介绍了一种实现二叉树层序遍历的方法,通过使用队列来逐层访问二叉树的节点,并将每一层的节点值存储在一个二维数组中返回。这种方法能够清晰地展示二叉树各层节点的顺序。
397

被折叠的 条评论
为什么被折叠?



