地址 https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回: [3,9,20,15,7] 提示: 节点总数 <= 1000
解法
进行树的遍历 然后放入vector
但是DFS的深度优先并不符合优先打印同层的节点,而是优先打印同一条路径上的节点
我们尝试使用bfs广度优先,即可发现符合题意
/** * 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> ans; void bfs(TreeNode* root){ if(root == NULL) return; queue<TreeNode*> q; q.push(root); while(!q.empty()){ TreeNode* p = q.front(); q.pop(); ans.push_back(p->val); if(p->left != NULL) q.push(p->left); if(p->right != NULL) q.push(p->right); } } vector<int> levelOrder(TreeNode* root) { bfs(root); return ans; } };