102. 二叉树的层序遍历 ------ BFS广度优先遍历、二维数组、队列
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
提示:
树中节点数目在范围 [0, 2000] 内
-1000 <= Node.val <= 1000
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/binary-tree-level-order-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; // 二维数组 queue<TreeNode*> queue; //队列 if (root != nullptr) { //非空结点入队 queue.push(root); } while (!queue.empty()) { // 非空队列遍历 int n = queue.size(); vector<int> level; // 每一层级对应一个一维数组 for (int i = 0; i < n; ++i) { TreeNode* node =queue.front(); // 定义队首为新结点 queue.pop(); // 出队 level.emplace_back(node -> val); //存入当前层级数组 if (node -> left != nullptr) { // 指向下一结点 入队 queue.push(node -> left); } if (node -> right != nullptr) { queue.push(node -> right); } } res.emplace_back(level); // 将该层数组存入二维数组res } return res; } };
hello my world
本文来自博客园,作者:slowlydance2me,转载请注明原文链接:https://www.cnblogs.com/slowlydance2me/p/16890155.html