层序遍历的一类题
本文最后更新于 273 天前,其中的信息可能已经有所发展或是发生改变。

二叉树的层序遍历往往用在求树宽,求树深的一类题中会频繁用到。

思想:使用一个队列,出队的同时将节点的左右孩子都入队即可

  • 注意遍历时先取出一层的size,否则随着左右孩子入队,其size会动态变化
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* <em>root</em>) {
        <em>if</em> (!root)
            <em>return</em> {};
        vector<vector<int>> res;
        int size;
        queue<TreeNode*> que;
        que.push(root);
        <em>while</em> (!que.empty()) {
            vector<int> cur_res;
            size = que.size();
            <em>for</em> (int i = 0; i < size; i++) {
                TreeNode* cur = que.front();
                que.pop();
                cur_res.push_back(cur->val);
                <em>if</em> (cur->left) que.push(cur->left);
                <em>if</em> (cur->right) que.push(cur->right);
            }
            res.push_back(cur_res);
        }
        <em>return</em> res;
    }
};

相关题目:

  1. 102. 二叉树的层序遍历 – 力扣(LeetCode)
    • 模板母体
  2. 107. 二叉树的层序遍历 II – 力扣(LeetCode)
    1. 描述:给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
    2. 思路:层序遍历 + reverse
      • std::reverse(res.begin(), res.end());
  3. 104. 二叉树的最大深度 – 力扣(LeetCode)
    • 实际上为res节点的个数
  4. 111. 二叉树的最小深度 – 力扣(LeetCode)
    • 这个场景下我们不需要用到res,转而用depth记录深度。每记录一层depth+1,若无孩子则返回。
  5. 199. 二叉树的右视图 – 力扣(LeetCode)
    • 右视图实际上就是层序便利的最后一个元素,实际上我们只需要记录循环中每一层的last one即可
  6. 637. 二叉树的层平均值 – 力扣(LeetCode)
    • 多计算一次平均值即可
  7. 429. N 叉树的层序遍历 – 力扣(LeetCode)
    • 在遍历孩子的时候改为
      • for(auto child: node->children) { if (child) { que.push(child); } }
  8. 515. 在每个树行中找最大值 – 力扣(LeetCode)
    • 记录每一层的最大值
  9. 116. 填充每个节点的下一个右侧节点指针 – 力扣(LeetCode)
    1. 已知当前层,将当前层的节点串一遍即可
    2. 或者在层序便利的过程中记录上一个节点,直接串在一起
  10. 117. 填充每个节点的下一个右侧节点指针 II – 力扣(LeetCode)
    • 这道题是二叉树,116给的完美二叉树,其实没有区别

层序遍历类题目完结。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇