二叉树的遍历(广度优先搜索)
二叉树的第二种遍历方式,层序遍历,本质是运用队列对二叉树进行搜索。
层序遍历是指将二叉树的每一层按顺序遍历,通过队列实现就是先将根节点push入队,统计此时的队列中的元素数量size,将size元素全部pop出去,再将pop出的元素的左右孩子的数值push入队,循环实现这个过程。定义二维数组来存储结果,这样可以显示出二叉树的层。
代码实现:
定义一个存储节点的队列,定义一个二维数组存储最后结果,定义一个一维数组来存储每一层的数值。
class Solution {public:vector<vector<int>> levelOrder(TreeNode* root) {queue<TreeNode*> que;if (root != NULL) que.push(root);vector<vector<int>> result;while (!que.empty()) {int size = que.size();vector<int> vec;for (int i = 0; i < size; i++) {TreeNode* node = que.front();que.pop();vec.push_back(node->val);if (node->left) que.push(node->left);if (node->right) que.push(node->right);}result.push_back(vec);}return result;}
};