【LeetCode】102. 二叉树的层序遍历、107. 二叉树的层序遍历 II

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

作者:小卢

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》


102. 二叉树的层序遍历

102. 二叉树的层序遍历

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

示例:

思路:

我们这里利用一个队列q和levelsize(代表当前层数据的个数)

一开始我们先压入一个数值到q,并且levelsize为1,当q不为空会时,我们循环levesize次,每次取队头,取完后再判断取的元素有没有左右节点,有的话就压入,然后结束循环的时候更新levelsize

代码:

1. class Solution {
2. public:
3.     vector<vector<int>> levelOrder(TreeNode* root) {
4.         queue<TreeNode*>q;
5. int levelsize=0;
6. if(root)
7.         {
8.             q.push(root);
9.             levelsize=1;
10.         }
11.         vector<vector<int>>vv;
12. while(!q.empty())
13.         {
14.             vector<int>v;
15. while(levelsize--)
16.             {
17.                 TreeNode*front=q.front();
18.                 q.pop();
19.                 v.push_back(front->val);
20. if(front->left)
21.                 {
22.                     q.push(front->left);
23.                 }
24. if(front->right)
25.                 {
26.                     q.push(front->right);
27.                 }
28.             }
29.             levelsize=q.size();
30.             vv.push_back(v);
31.         }
32. return vv;
33.     }
34. };

107. 二叉树的层序遍历 II

107. 二叉树的层序遍历 II

题目:

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

示例:

思路:

和上题一样,就结尾多一个逆置。

代码:

1. class Solution {
2. public:
3.     vector<vector<int>> levelOrderBottom(TreeNode* root) {
4.         queue<TreeNode*>q;
5. int levelsize = 0;
6. if (root)
7.         {
8.             q.push(root);
9.             levelsize = 1;
10.         }
11.         vector<vector<int>>vv;
12. while (!q.empty())
13.         {
14.             vector<int>v;
15. while (levelsize--)
16.             {
17.                 TreeNode* front = q.front();
18.                 q.pop();
19.                 v.push_back(front->val);
20. if (front->left)
21.                 {
22.                     q.push(front->left);
23.                 }
24. if (front->right)
25.                 {
26.                     q.push(front->right);
27.                 }
28.             }
29.             levelsize = q.size();
30.             vv.push_back(v);
31.         }
32. reverse(vv.begin(),vv.end());
33. return vv;
34.     }
35. };


相关文章
|
1月前
|
算法
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
16 1
|
1月前
力扣面试经典题之二叉树
力扣面试经典题之二叉树
16 0
|
2天前
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
|
9天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
11天前
|
算法
【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历
【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历
|
1月前
leetcode热题100.二叉树中的最大路径和
leetcode热题100.二叉树中的最大路径和
18 0
|
1月前
leetcode热题100. 二叉树的最近公共祖先
leetcode热题100. 二叉树的最近公共祖先
20 0
|
1月前
LeetCode-二叉树OJ题
LeetCode-二叉树OJ题
18 0
|
1月前
|
API
Leetcode-二叉树oj题
Leetcode-二叉树oj题
16 0
Leetcode-二叉树oj题
|
1月前
|
存储 Serverless 索引
二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历【LeetCode刷题日志】
二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历【LeetCode刷题日志】