首页 > 其他分享 >102. 二叉树的层序遍历

102. 二叉树的层序遍历

时间:2023-05-22 13:34:32浏览次数:82  
标签:return level res 层序 push vector 二叉树 102 root

class Solution {
public:
    vector<vector<int>> res;
    void bfs(TreeNode* root)
    {
        queue<TreeNode*> q;
        q.push(root);
        int last=0;
        while(!q.empty())
        {
            vector<int> level;
            int len=q.size();//执行这行时,队列里存储的节点都是哥们,同一层的
            while(len--)//遍历所有同一层的节点
            {
                auto t=q.front();
                q.pop();
                level.push_back(t->val);
                if(t->left)    q.push(t->left);//这里要判断一下,只加入非空节点
                if(t->right)    q.push(t->right);//如果不判断,当同一层全是空的加入到队列中,最终level也是空的,res加入时就要特判一下防止加入空的level
            }
            res.push_back(level);
        }
        return;
    }
    vector<vector<int>> levelOrder(TreeNode* root) {
        if(!root)
            return res;
        bfs(root);
        return res;
    }
};

标签:return,level,res,层序,push,vector,二叉树,102,root
From: https://www.cnblogs.com/tangxibomb/p/17420361.html

相关文章

  • LeetCode 103. 二叉树的锯齿形层次遍历
    classSolution{public:vector<vector<int>>res;voidbfs(TreeNode*root){queue<TreeNode*>q;q.push(root);intcnt=0;while(!q.empty()){vector<int>level;......
  • 145. 二叉树的后序遍历
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullptr),right(nullptr){}*......
  • 94. 二叉树的中序遍历
    classSolution{public:vector<int>inorderTraversal(TreeNode*root){vector<int>res;stack<TreeNode*>st;while(root||st.size()){while(root){st.push(root......
  • Java二叉树详解
    当你看到一棵茂盛的大树时,你是否曾想过这样的问题:它是如何生长起来的?落叶归根,数百年来,不断地生长与死亡。其实,每个程序员也可以成为一棵大树的缔造者。而Java的二叉树,就像互联网上的知识一样,通过它的枝干和叶子,能够让我们更加高效地搜索、插入和删除节点。虽然二叉树算法并不简单......
  • 力扣---236. 二叉树的最近公共祖先
    给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例1:输入:root=[3,5,1,6,2,0,8,null,n......
  • 力扣---1372. 二叉树中的最长交错路径
    给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下:选择二叉树中任意 节点和一个方向(左或者右)。如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。改变前进方向:左变右或者右变左。重复第二步和第三步,直到你在树中无法继续移动。交错路径的长度......
  • Uva--297 Quadtrees(非二叉树/四叉树)
    记录18:342023-5-20uva.onlinejudge.org/external/2/297.htmlreference:《算法竞赛入门经典第二版》例题6-11非二叉树,这还是比较有趣的,图形学上还有八叉树用来划分空间的。这道题将图和四叉巧妙的结合起来,其原理也是使用先序遍历,边读边建树#include<cstdio>#include<cstri......
  • 1102 Invert a Binary Tree
    题目:ThefollowingisfromMaxHowell@twitter:Google:90%ofourengineersusethesoftwareyouwrote(Homebrew),butyoucan'tinvertabinarytreeonawhiteboardsofuckoff. Nowit'syourturntoprovethatYOUCANinvertabinarytree!I......
  • Uva--699 The Falling Leaves,(二叉树的递归遍历)
    记录10:462023-5-20http://uva.onlinejudge.org/external/6/699.htmlreference:《算法竞赛入门经典第二版》例题6-10二叉树的层次遍历,边读边写(这些题给我感觉是非常灵活),对每个节点需要的数据就是在sum数组的位置#include<cstdio>#include<iostream>#include<sstream>#d......
  • LeetCode 105. 从前序与中序遍历序列构造二叉树
    题目链接:LeetCode105.从前序与中序遍历序列构造二叉树题意:给定两个整数数组 preorder和inorder ,其中 preorder是二叉树的先序遍历,inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。解题思路:模拟手动构建的过程,注意下标的变化。完整代码如下:/***Defini......