LeetCode 102. 二叉树的层序遍历
题目描述
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
解法
1.辅助数组
解题思路
这个题是在层次遍历的基础上把数据分层展示出来,首先将根节点入队,然后在每一轮循环中记录当前层的节点数量,通过for循环处理当前层的所有节点:将每个节点出队并存入子数组,同时将该节点的左右子节点入队,这样就能确保按层级顺序遍历所有节点,最后将每层的子数组添加到结果数组中。
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> nums; //子数组int length = q.size();for(int i = 0;i < length;i ++){ //遍历完此层的所有节点TreeNode* t = new TreeNode(); //代理节点t = q.front();q.pop();nums.push_back(t -> val); if(t -> left != nullptr) q.push(t -> left);if(t -> right != nullptr) q.push(t -> right);}ans.push_back(nums);}return ans;}
};
时间复杂度O(N),空间复杂度O(N)