首页 > 其他分享 >层序遍历(广度优先搜索)-102

层序遍历(广度优先搜索)-102

时间:2024-08-29 22:15:30浏览次数:13  
标签:遍历 int 层序 我们 队列 102 root 节点

题目描述

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

解题思路

这里我们层次遍历我们需要使用到队列这个数据结构,我们依次从根节点开始遍历,我们需要使用一个变量来记录此时我们队列中元素的数量,因为这样我们才知道这一层我们需要从队列中弹出多少个元素,弹出的元素我们加入到集合中,然后再把弹出元素的左右孩子节点依次添加到我们的队列中,当然这里我们还要判断遍历结束的条件--就是当我们这一层的所有元素都没有左右孩子节点就结束我们的遍历了

代码实例

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> result = new ArrayList<>();

        if (root == null) {
            return result;
        }
        // TreeNode index=root;
        Queue<TreeNode> queue = new LinkedList<>();
        //用来判断遍历终止的条件
        int judge = 1;
        queue.add(root);
        while (judge != 0) {
            int size = queue.size();
            //用来判断遍历终止的条件
            int xiao = 0;
            List<Integer> list = new ArrayList<>();
            for (int i = 1; i <= size; i++) {
                TreeNode temp = queue.poll();
                list.add(temp.val);
                if (temp.left != null) {
                    queue.add(temp.left);
                    xiao = 1;
                }
                if (temp.right != null) {
                    queue.add(temp.right);
                    xiao = 1;
                }

            }
            result.add(list);
            if (xiao == 1) {
                judge = 1;
            } else {
                judge = 0;
            }
        }
        return result;
    }
}

标签:遍历,int,层序,我们,队列,102,root,节点
From: https://www.cnblogs.com/dfj-blog/p/18387629

相关文章

  • IEnumrable接口 GetEnumerator方法 foreach 遍历 自定义 迭代器
    **能用foreach遍历访问的对象需要实现什么接口或声明什么方法**要使用foreach循环,对象必须实现IEnumerable接口或者声明GetEnumerator方法。解释IEnumerable接口:这个接口定义了一个名为GetEnumerator的方法,该方法返回一个枚举器,允许客户端代码逐个访问集合......
  • day13: 第六章 二叉树part01 |二叉树的前序遍历,后序遍历,中序遍历,(递归。层序(广度)跟
    二叉树递归三部曲:1.确定递归函数的参数和返回值。2.确定终止条件3.确定单层递归的逻辑144.二叉树的前序遍历:中左右,递归:classSolution{publicList<Integer>preorderTraversal(TreeNoderoot){List<Integer>res=newArrayList<Integer>();p......
  • 二叉树的层序遍历 C++
    给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root=[]输出:[]classSolution{public:vector<vect......
  • 图论:图的遍历(DFS vs. BFS)
    文章目录引言基本概念无向图示例绘制图形深度优先搜索(DFS)基本概念可视化DFS过程深度优先搜索(DFS)DFS应用场景广度优先搜索(BFS)基本概念可视化BFS过程广度优先搜索(BFS)应用场景DFSvs.BFS基本概念对比性能对比场景分析**总结对比**社交网络图遍历使用DFS使用BFS......
  • 代码训练营 Day13 | 递归遍历 | 层序遍历
    144. 二叉树的前序遍历递归思路:确定递归函数的参数和返回值确定递归函数的终止条件确定单层递归的逻辑前序遍历顺序:中左右#Definitionforabinarytreenode.#classTreeNode(object):#def__init__(self,val=0,left=None,right=None):#......
  • 25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.3 二叉树的遍历和线索二叉树
    一、单项选择题————————————————————————————————————————解析:二叉树中序遍历的最后一个结点一定是从根开始沿右子女指针链走到底的结点,设用p指示。若结点p不是叶结点(其左子树非空),则前序遍历的最后一个结点在它的左子树中,A、B......
  • ArrayList遍历, 元素查找
    1,ArrayList集合的遍历与数组类似,都可以使用foreach语句string[]str1={"a","b","c","d","e","f"};ArrayListList=newArrayList(str1);foreach(variteminList)......
  • 代码随想录第16天:513.找树左下角的值、112. 路径总和、106.从中序与后序遍历序列构造
    513.找树左下角的值,层序遍历//找树左下角的值,用层序遍历很容易实现#include<iostream>#include<queue>structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode(intx):val(x),left(nullptr),right(nullptr){}};//找到最底层......
  • 二叉树的前序遍历(递归和非递归)
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullptr),right(nullptr){}*......
  • 《Programming from the Ground Up》阅读笔记:p95-p102
    《ProgrammingfromtheGroundUp》学习第6天,p95-p102总结,总计8页。一、技术总结1.directive(伪指令)很多资料喜欢把directive和instruction都翻译成“指令”,这样在看到指令这个词时就不知道到底指的是什么?这里参考其它人的做法,将directive称为“伪指令”。2.rept&.endr......