剑指 Offer 32 - I. 从上到下打印二叉树
思路一:BFS广度优先遍历
1: 定义一个res返回值
2:定义一个队列,先把头节点压入队列
3:while循环判断队列是否为空不为空进入循环
4:先取出队列第一个判断左右子树为不为空,不为空就先存值到res,再往后压入队列中
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> levelOrder(TreeNode* root) {
vector<int> res;
if(root==nullptr) return res;
queue<TreeNode*> myque;
myque.push(root);
res.push_back(root->val);
while(!myque.empty()){
TreeNode* temp = myque.front(); //找到头
myque.pop(); //弹出
if(temp->left!=nullptr) {
res.push_back(temp->left->val);
myque.push(temp->left);
} //左不为空继续往左压
if(temp->right!=nullptr) {
res.push_back(temp->right->val);
myque.push(temp->right); //右不为空继续压
}
}
return res;
}
};