赞
踩
给你二叉树的根节点 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
Method:
利用队列先进先出的性质,对给定的二叉树进行层序遍历。
Code:
- class Solution{
- public:
- // 二叉树的层序遍历
- vector<vector<int>> levelOrder(TreeNode *root){
- // 利用队列先进先出的性质
- queue<TreeNode *> temp;
- // 二维数组记录最终的结果
- vector<vector<int>> result;
-
- // 临时保存队头节点
- TreeNode *temp_node;
- // 记录一层的节点数量
- int count=0;
-
- // 如果根节点为空
- if(root==nullptr){
- // 则该树为一个空树
- // 返回空数组
- return result;
- }
- else{
- // 如果根节点不为空
- // 将根节点入队
- temp.push(root);
- }
-
- // 如果队列不为空
- // 则保持循环
- while(!temp.empty()){
- // 记录当前一层的节点
- vector<int> temp_layer;
- // 记录当前一层的节点数量
- // 即每次while循环开始时
- // 队列中的节点就是当前一层的所有节点
- count=temp.size();
-
- // 依次取出一层的每个节点
- for(int i=0;i<count;i++){
- // 保存队首节点
- temp_node=temp.front();
- // 弹出队首节点
- temp.pop();
-
- // 记录队首节点的值
- temp_layer.push_back(temp_node->val);
-
- // 如果该节点有左孩子
- if(temp_node->left!=nullptr){
- // 左孩子进队
- temp.push(temp_node->left);
- }
- // 如果该节点有右孩子
- if(temp_node->right!=nullptr){
- // 右孩子进队
- temp.push(temp_node->right);
- }
- }
- // 将记录的该层节点保存到结果二维数组中
- result.push_back(temp_layer);
- }
- // 返回结果二维数组
- return result;
-
- }
- };
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/binary-tree-level-order-traversal
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。