【教3妹学编程-算法题】N 叉树的前序遍历

news2025/6/25 20:50:50

瑟瑟发抖

2哥 : 叮铃铃,3妹,准备复工了啊,过年干嘛呢,是不是逛吃逛吃,有没有长胖呢。
3妹:切,不想上班,假期能不能重来一遍啊,虽然在家我妈张罗着要给我相亲呢。可是在家还是很好的啊。
2哥 : 相亲?哈哈哈哈
3妹:别笑了,我妈说跟我年龄相等的人都已经孩子上小学了,跟她年龄相等的人孙子最少都会打酱油了。
2哥 :哈哈哈哈,让我先笑一会儿
3妹:话说2哥过年在家里也刷题吗?
2哥:当然了,雷打不动。
3妹:好吧,还得是2哥🐂,我有几天懈怠了。
2哥:好吧,说到刷题啊,今天有一道“二叉树”的题目, 让我们先做一下吧~

吃瓜

题目:

给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。

n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

示例 1:
image.png
输入:root = [1,null,3,2,4,null,5,6]
输出:[1,3,5,6,2,4]
示例 2:
image.png
输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[1,2,3,6,7,11,14,4,8,12,5,9,13,10]

提示:

节点总数在范围 [0, 10^4]内
0 <= Node.val <= 10^4
n 叉树的高度小于或等于 1000

思路:

思考

递归,
思路比较简单,N 叉树的前序遍历与二叉树的前序遍历的思路和方法基本一致,可以参考「144. 二叉树的前序遍历」的方法,每次递归时,先访问根节点,然后依次递归访问每个孩子节点即可。

java代码:

/*
// Definition for a Node.
class Node {
    public int val;
    public List<Node> children;

    public Node() {}

    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/

class Solution {
    public List<Integer> preorder(Node root) {
        List<Integer> res = new ArrayList<>();
        helper(root, res);
        return res;
    }

    public void helper(Node root, List<Integer> res) {
        if (root == null) {
            return;
        }
        res.add(root.val);
        for (Node ch : root.children) {
            helper(ch, res);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1453812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

压敏电阻:浪涌保护的理想解决方案?

有关电涌保护的新法规迫使工程师寻找解决方案&#xff0c;以最小的成本损失集成此类保护&#xff0c;特别是在成本敏感的消费产品中。在汽车领域&#xff0c;电涌保护也越来越重要&#xff0c;这要归功于即使是最基本的量产车中电子含量的快速增长&#xff0c;以及公认的电源电…

MySQL简单配置GTID

前期规划 IP地址 角色 系统版本 内核 软件包名称 192.168.2.3 Mysql主服务器 CentOS Stream 9 5.14.0- 381.el9.x86_64 mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz 192.168.2.4 Mysql从服务器 CentOS Stream 9 5.14.0- 381.el9.x86_64 mysql-8.2.0-linux-glibc…

C++ //练习 7.27 给你自己的Screen类添加move、set和display函数,通过执行下面的代码检验你的类是否正确。

C Primer&#xff08;第5版&#xff09; 练习 7.27 练习 7.27 给你自己的Screen类添加move、set和display函数&#xff0c;通过执行下面的代码检验你的类是否正确。 Screen myScreen(5, 5, X); myScreen.move(4, 0).set(#).display(cout); cout<<"\n"; myScr…

计算机网络——18无连接传输UDP

无连接传输UDP UDP “尽力而为的”服务&#xff0c;报文段可能 丢失送到应用进程的报文段乱序 无连接 UDP发送端和接收端之间没有握手每个UDP报文段都被独立的处理 UDP被用于 流媒体DNSSNMP 在UDP上实现可靠传输 在应用层增加可靠性应用特定的差错格式 UDP&#xff1a;用户…

综合交易模型教程---qmt实盘链接,提供源代码

综合交易模型教程---qmt实盘链接&#xff0c;提供源代码 Original L1511732 数据分析与运用 2024-02-17 00:13 贵州 目前框架实盘全部完成了&#xff0c;后面写教程&#xff0c;每一个函数怎么样使用&#xff0c;怎么样开发自己的策略 模拟盘现在登录不了我直接实盘展示 后面…

阿里云轻量应用服务器怎么样?有哪些好处?

阿里云轻量应用服务器有哪些优势&#xff1f;轻量服务器具有价格优惠、使用门槛低快速上手、灵活变配、可视化运维等优势&#xff0c;阿里云百科aliyunbaike.com整理轻量应用服务器详细优势&#xff1a; 1、价格优惠 阿里云轻量应用服务器性价比高&#xff0c;价格优惠&#x…

ubuntu制作windows的u盘启动盘

概要&#xff1a; 本篇演示在ubuntu22.04中制作windows10的u盘启动盘 一、下载woeusb 1、下载woeusb 在浏览器中输入https://github.com/woeusb/woeusb/releases访问woeusb 点击红色矩形圈出来的部分&#xff0c;下载woeusb 2、安装wimtools wimtools是woeusb的一个必须的…

EasyRecovery软件免费版与付费版有哪些功能区别?

免费版的EasyRecovery软件在功能和恢复能力上确实存在一些限制。 首先&#xff0c;在数据恢复方面&#xff0c;免费版通常只能恢复最多1GB的数据。这意味着&#xff0c;如果你需要恢复的数据量超过1GB&#xff0c;你将需要升级到付费版才能完全恢复。 其次&#xff0c;免费版…

第4讲引入JWT前后端交互

引入JWT前后端交互 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519)&#xff1b; JWT就是一段字符串&#xff0c;用来进行用户身份认证的凭证&#xff0c;该字符串分成三段【头部、载荷、签证】 后端接口测试&…

c++ 可调用对象的绑定器和包装器

文章目录 可调用对象普通函数类的静态成员函数仿函数lambda函数类的非静态成员函数 最重要的可被转换为函数指针的类对象 包装器 function适配器bind可变函数和参数实现回调函数实现替代虚函数 可调用对象 在C中&#xff0c;可以像函数一样调用的有: 普通函数、类的静态成员函…

解决IDEA的Project无法正常显示的问题

一、问题描述 打开IDEA&#xff0c;结果发现项目结构显示有问题&#xff1a; 二、解决办法 File -> Project Structure… -> Project Settings (选Modules)&#xff0c;然后导入Module 结果&#xff1a; 补充&#xff1a; IDEA提示“The imported module settings a…

深度学习系列58:大模型训练和压缩

1. 大模型训练 1.1数据并行 1.2 模型并行 1.3 ZeRO 1.4 流水线并行 1.5 混合精度训练 1.6 offloading 把梯度放在cpu上保存和计算 1.7 overlapping 提前传输数据 1.8 checkpointing 中间线性层不保存&#xff0c;反向传播时再次重新计算 1.9 使用BMtrain 2. 大模型压…

AutoSAR(基础入门篇)10.3-BswM配置

目录 一、ECU State Handing(ESH) 二、Module Initialization 三、Communication Control 说起BswM的配置,其实博主问过很多朋友了,大家基本都只用自动配置;很少有用到手动配置的时候,对于刚刚入门的大家来说,掌握自动配置基 本也就足够了。 一、ECU State Handing(ESH…

Vue首屏优化,12个提速建议

文章目录 代码拆分和懒加载&#xff1a;代码拆分懒加载 图片优化&#xff1a;组件懒渲染&#xff1a;数据预获取和缓存&#xff1a;服务器端渲染&#xff08;SSR&#xff09;&#xff1a;代码压缩和合并&#xff1a;使用 CDN 加速&#xff1a;监控和性能分析&#xff1a;代码优…

LeetCode Python - 22.括号生成

目录 题目答案运行结果 题目 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例…

中国半导体设备行业概述

TrendForce根据各种行业数据和主要代表性公司的最新财务报告综合分析指出&#xff0c;中国本土设备产业在半导体制造流程&#xff08;除光刻机外&#xff09;的各个阶段均有覆盖能力。具体来说&#xff0c;国产设备在中国本地市场中&#xff0c;在剥离、清洗及蚀刻等工艺上的本…

C++入门学习(三十)一维数组的三种定义方式

数组是什么&#xff1f; 数组&#xff08;Array&#xff09;是有序的元素序列。 若将有限个类型相同的变量的集合命名&#xff0c;那么这个名称为数组名。组成数组的各个变量称为数组的分量&#xff0c;也称为数组的元素&#xff0c;有时也称为下标变量。用于区分数组的各个元素…

数据库数据加密的 4 种常见思路的对比

应用层加解密方案数据库前置处理方案磁盘存取环节&#xff1a;透明数据加密DB 后置处理 最近由于工作需要&#xff0c;我对欧洲的通用数据保护条例做了调研和学习&#xff0c;其中有非常重要的一点&#xff0c;也是常识性的一条&#xff0c;就是需要对用户的个人隐私数据做好加…

操作系统原理与实验——实验一队列

实验指南 运行环境&#xff1a; Dev c 算法思想&#xff1a; 队列顺序存储用链表来表示&#xff0c;用front指针表示队首&#xff0c;用rear指针表示队尾&#xff0c;实现队列的几个基本的操作。 核心数据结构&#xff1a; typedef int datatype; typedef struct { datatype a…

计算机网络——15套接字编程

套接字编程 Socket编程 Socket编程&#xff1a;应用进程使用传输层提供的服务才能够交换报文&#xff0c;实现应用协议&#xff0c;实现应用 TCP/IP&#xff1a;应用进程使用Socket API访问传输服务 地点&#xff1a;界面上的SAP 方式&#xff1a;Socket API 目标&#xff1…