二叉树的层序遍历(队列)
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:

输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
/** * 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>> ans; if(root==nullptr) return ans; //层序遍历,即广度优先遍历,需要用到队列 queue<TreeNode*> q; q.push(root); while(!q.empty()){ vector<int> temp; int n = q.size(); for(int i=0;i<n;i++){//将当前队列的元素(即一层的节点)放入temp,同时将下一层的元素放在队尾 TreeNode* node = q.front(); temp.emplace_back(node->val); if(node->left) q.push(node->left); if(node->right) q.push(node->right); q.pop(); } ans.emplace_back(temp); } return ans; } };
浙公网安备 33010602011771号