二叉树——429,515,116

news/2025/2/3 18:12:43 标签: 算法, 数据结构, leetcode, 力扣, java, 二叉树

今天继续做关于二叉树层序遍历的相关题目,一共有三道题,思路都借鉴于最基础的二叉树的层序遍历。

LeetCode429.N叉树的层序遍历

N叉树的层序遍历
这道题不再是二叉树了,变成了N叉树,也就是该树每一个节点的子节点数量不确定,可能为2,可能为1,也可能为3等等。要求也是需要从左到右层序遍历,和二叉树的层序遍历类似,需要改动的地方有,每一个节点出队时,其叶子节点全部存于一个列表中,将这个列表中的全部元素入队即可,不再是将二叉树仅有的两个子节点:左子节点,右子节点入队。

java">	public static List<List<Integer>> levelOrder(Node root){
        List<List<Integer>> list=new ArrayList<>();
        Queue<Node> queue=new LinkedList<>();
        if (root==null){
            return list;
        }else {
            queue.offer(root);
        }
        Node node=root;
        while (!queue.isEmpty()){
            int size=queue.size();
            List<Integer> lst = new ArrayList<>();
            for (int i = 0; i < size; i++) {
                node=queue.poll();
                if (node.children!=null) {
                    for (int j = 0; j < node.children.size(); j++) {
                        queue.offer(node.children.get(j));
                    }
                }
                lst.add(node.val);
            }
            list.add(lst);
        }
        return list;
    }

LeetCode515.在每个树行中找最大值

在每个树行中找最大值
这道题先层序遍历,可以将每一层的所有元素存入数组,然后比较数组中的所有元素,选出最大值,即为二叉树该层的最大值,如此循环,将二叉树的所有层都遍历完成。

java">	public static int researchMax(List<Integer> list){
        int max=list.get(0);
        for (int i = 0; i < list.size(); i++) {
            if (max<list.get(i)){
                max=list.get(i);
            }
        }
        return max;
    }
    
    public List<Integer> largestValues(TreeNode root){
        List<Integer> list=new ArrayList<>();
        Queue<TreeNode> queue=new LinkedList<>();
        if (root==null){
            return list;
        }else {
            queue.offer(root);
        }
        TreeNode node;
        while (!queue.isEmpty()){
            List<Integer> lst = new ArrayList<>();
            int size= queue.size();
            for (int i = 0; i < size; i++) {
                node=queue.poll();
                if (node.left!=null){
                    queue.offer(node.left);
                }
                if (node.right!=null){
                    queue.offer(node.right);
                }
                lst.add(node.val);
            }
            list.add(researchMax(lst));
        }
        return list;
    }

LeetCode116.填充每个节点的下一个右侧节点指针

填充每个节点的下一个右侧节点指针
层序遍历,将每一个出队后的节点的next指针指向这时队列的peak。这里一定需要一个计数器,每次进入循环时,记录当前的队列长度,也就是当前树行的节点个数,如果遍历到最后一个节点时,后面没有节点了,这时就需要将next指针指向null值。

java">	public static Node connect(Node root){
        Queue<Node> queue=new LinkedList<>();
        if (root==null){
            return null;
        }else {
            queue.offer(root);
        }
        Node node;
        while (!queue.isEmpty()){
            int size= queue.size();
            for (int i = 0; i < size; i++) {
                node=queue.poll();
                if (i==size-1){
                    node.next=null;
                }else {
                    node.next=queue.peek();
                }
                if (node.left!=null){
                    queue.offer(node.left);
                }
                if (node.right!=null){
                    queue.offer(node.right);
                }
            }
        }
        return root;
    }

http://www.niftyadmin.cn/n/5840986.html

相关文章

bat脚本实现自动化漏洞挖掘

bat脚本 BAT脚本是一种批处理文件&#xff0c;可以在Windows操作系统中自动执行一系列命令。它们可以简化许多日常任务&#xff0c;如文件操作、系统配置等。 bat脚本执行命令 echo off#下面写要执行的命令 httpx 自动存活探测 echo off httpx.exe -l url.txt -o 0.txt nuc…

我问了DeepSeek和ChatGPT关于vue中包含几种watch的问题,它们是这么回答的……

前言&#xff1a;听说最近DeepSeek很火&#xff0c;带着好奇来问了关于Vue的一个问题&#xff0c;看能从什么角度思考&#xff0c;如果回答的不对&#xff0c;能不能尝试纠正&#xff0c;并帮我整理出一篇不错的文章。 第一次回答的原文如下&#xff1a; 在 Vue 中&#xff0c;…

自制Windows系统(十一、Windows11GUI)

开源地址&#xff1a;下载&#xff08;Work(Windows11gui).img&#xff09; 上图 部分代码&#xff1a; void init_screen8(char *vram, int x, int y) { int *fat; unsigned char c; struct MEMMAN *memman (struct MEMMAN *) MEMMAN_ADDR; boxfill8(vram, x, 136, 0, …

javaEE-7.网络原理-HTTPS

目录 1.概念: 2.加密形式 3.HTTPS工作流程 1).引入对称加密 2).引入非对称加密 1.概念: https是http的加密版. HTTPS : HTTP SSL(加密) HTTP属于明文传输,在传输过程中,可能会存在一定的风险,HTTPS对传输的内容进行了加密处理. HTTPS除了对内容进行密文传输,别的和HTTP是…

doris:主键模型的更新并发控制

概览​ Doris 采用多版本并发控制机制&#xff08;MVCC - Multi-Version Concurrency Control&#xff09;来管理并发更新。每次数据写入操作均会分配一个写入事务&#xff0c;该事务确保数据写入的原子性&#xff08;即写入操作要么完全成功&#xff0c;要么完全失败&#xf…

1. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--引言

在当前软件开发领域&#xff0c;云原生和微服务架构已经成为主流趋势&#xff0c;传统的单体应用正逐步向分布式系统转型。随着业务需求的不断变化与用户规模的迅速扩大&#xff0c;如何在保证高可用、高扩展性的同时&#xff0c;还能提高开发效率与降低维护成本&#xff0c;成…

熵采样在分类任务中的应用

熵采样在分类任务中的应用 在机器学习的分类任务里,数据的标注成本常常制约着模型性能的提升。主动学习中的熵采样策略,为解决这一难题提供了新的思路。本文将带你深入了解熵采样在分类任务中的原理、应用及优势。 一、熵采样的原理(优化版) 熵,源于信息论,是对不确定…

MySQL知识点总结(十九)

InnoDB集群单主模式和多主模式集群结构适用哪些应用场合&#xff1f; InnoDB集群主要的应用场合如下&#xff1a; 弹性复制环境&#xff0c;这种复制基础架构中涉及的服务器数量非常的不稳定高可用分片环境&#xff0c;分片是一种流行的写横向扩展方法&#xff0c;每个分片可…