题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
二叉树的BFS(广度优先遍历)一般要借助其他数据结构实现,比如用队列实现:
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> res;
if(root==NULL)
return res;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
res.push_back(q.front()->val);
if(q.front()->left!=NULL) //q.front表示队列的首元素,是root指针,然后把root连的左右子树结点压入queue
q.push(q.front()->left);
if(q.front()->right!=NULL)
q.push(q.front()->right);
q.pop();
}
return res;
}
};
网上找到的二叉树BFS原理及代码设计:(转载)