题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解析:
这是二叉树的层次遍历,借助于一个队列可以实现。首先将根节点入队列,然后队列首元素出队列,打印该节点的值。若该节点有左孩子结点则将左孩子结点入队列,若该节点有右孩子节点则将右孩子节点入队列。直到队列为空。
代码如下:
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {//层次遍历
vector<int> result;
if(!root)
return result;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
root=q.front();
q.pop();
result.push_back(root->val);
if(root->left)
q.push(root->left);
if(root->right)
q.push(root->right);
}
return result;
}
};
vector<int> PrintFromTopToBottom(TreeNode* root){
vector<int> res;
if(!root)
return res;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()){
res.push_back(que.front()->val);
if(que.front()->left)
que.push(que.front()->left);
if(que.front()->right)
que.push(que.front()->right);
que.pop();
}