LeetCode算法题-N-ary Tree Preorder Traversal(Java实现)

解锁Vscode:C/C++环境配置超详细指南 本文详细介绍如何在 VSCode 中配置 C/C++ 开发环境,帮助开发者快速搭建高效的编码调试环境。内容涵盖前期准备、软件下载安装、环境变量配置、工作区文件设置及测试运行全流程:首先需准备 VSCode 编辑器、MinGW-w64 编译器及 C/C++ 插件;接着完成工具下载与安装,配置系统环境变量以确保编译器可全局调用;然后通过创建.vscode工作区文件夹,配置核心文件,实现代码智能提示与调试功能;最后通过编写 Hello World 示例验证环境可用性,并附上常见问题排查方案。 阅读详情

这是悦乐书的第268次更新,第282篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第135题(顺位题号是589)。给定一个n-ary树,返回其节点值的前序遍历。例如,给定一个3-ary树:

     1
  /  |  \
 3   2   4
/ \
5  6

其前序遍历结果为:[1,3,5,6,2,4]。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

利用递归。二叉树前序遍历是从根节点开始,然后是左子树,最后是右子树,题目给的是N-ary树,但是遍历节点的顺序还是和二叉树一样,从根节点开始,然后对其子节点(list数组)进行遍历,其子节点进行前序遍历,和题目性质一样,可以直接使用递归的方式参与计算。

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

    public Node() {}

    public Node(int _val,List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
    public List<Integer> preorder(Node root) {
        if (root == null) {
            return new ArrayList<Integer>();
        }
        List<Integer> list = new ArrayList<Integer>();
        getValue(root, list);
        return list;
    }
    public List<Integer> getValue(Node root, List<Integer> list) {
        if (root == null) {
            return null;    
        } 
        list.add(root.val);
        if (root.children != null) {
            for (Node n : root.children) {
                getValue(n, list);
            }    
        }
        return list;
    }
}

03 第二种解法

我们也可以使用迭代的方式来实现前序遍历。这里我们使用栈,借助其先进后出的特性,有一点需要注意的是,在处理其子节点时,我们需要从后往前入栈,这样出栈的时候就是从前往后了。

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

    public Node() {}

    public Node(int _val,List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
    public List<Integer> preorder(Node root) {
        if (root == null) {
            return new ArrayList<Integer>();
        }
        List<Integer> list = new ArrayList<Integer>();
        Stack<Node> stack = new Stack<Node>();
        stack.push(root);
        while (!stack.isEmpty()) {
            Node temp = stack.pop();
            list.add(temp.val);
            if (temp.children != null) {
                for (int i=temp.children.size()-1; i >= 0; i--) {
                    stack.push(temp.children.get(i));
                }
            }
        }
        return list;
    }
}

04 小结

算法专题目前已日更超过四个月,算法题文章135+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

IgH EtherCAT 从入门到精通:第 29 章 实战:EoE 远程维护通道搭建 摘要:本章详细介绍了基于EoE(Ethernet over EtherCAT)协议的远程维护通道搭建方案。主要内容包括:1)网络架构设计,采用管理网络与EoE子网隔离的方案;2)从站EoE支持确认与IP地址配置,提供API和命令行两种方式;3)路由/交换两种部署模式,重点推荐路由模式并给出自动化配置脚本;4)SSH远程访问配置,包括直接连接和跳板访问两种方式;5)安全加固措施,如防火墙规则、SSH密钥认证等;6)故障恢复机制与性能注意事项。该方案实现了通过EtherCAT网络对从站设备的远程SSH访问、文件 阅读详情

相关推荐

PL端:HDMI 输出实验

开发板没有HDMI编码芯片,是将FPGA的3.3差分IO直接连接到HDMI连接器,FPGA 完成 24 位 RGB 编码输出TMDS 差分信号。1、学会使用第三点IP核,首先是添加,后面的使用和自带IP核操作一致。2、主要还是在梳理vivado使用流程。

qq_43441284的博客 4287

算法: 前序遍历N叉树 589. N-ary Tree Preorder Traversal

589. N-ary Tree Preorder Traversal Given the root of an n-ary tree, return the preorder traversal of its nodes’ values. Nary-Tree input serialization is represented in their level order traversal. Each group of children is separated by the null value (See

AI架构师易筋 430

锐浪报表 Grid++Report 子报表 Delphi

锐浪报表 Grid++Report 是国内较好的报表控件,本人一直使用它,做出很多特色的报表。可以说你的报表设计出来,它基本上能做出来。 但是它帮助文件上,说的不深,近期因为要做一个有关社工的报表,大表中,嵌套2个子表。可以说,一个表到三个数据集,分别打印。 在认真看了帮助的基础上,网上探索,基本无此类,特别是Delphi的帮助,几乎为零。经二天摸索,做出来了。 一、设计思路 1、大表和二个小表,可以设计为三个表,分别使用三个GridppReport控件,取名...

lyhoo163的专栏 9071

java二叉树preOrder()_二叉树前序遍历Binary Tree Preorder Traversal (Java)

Binary Tree Preorder Traversal (Java)public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }}public class Solution {public ArrayList preorderTraversal(TreeNode root) {...

weixin_33331559的博客 331

[FreeRTOS+STM32CubeMX] 03 USART串口调试-基于中断实现接收和发送数据

我们接着上一小节,上一节讲到,接收上位机传来的数据时,需要事先知道传来的数据的字节数,这一操作实在有些反人类,那么如何解决这个问题,上位机输入多少,我们就接收多少数据呢? 接下来我将把USART引入中断,在接收数据的回调函数中引入二值信号量、消息队列,来让我的接收数据能够存储在队列中,并一个一个的在任务中输出出来,并最终在上位机回显。

RichieHuang的博客 2648

MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境)

本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。

ol78901234的博客 309

N-ary Tree Preorder Traversal N叉树的前序遍历

给定一个N叉树,返回其节点值的前序遍历。 例如,给定一个 3叉树 :   返回其前序遍历: [1,3,5,6,2,4]。 说明: 递归法很简单,你可以使用迭代法完成此题吗? 思路:这道题就是n叉树的前序遍历,我们分为递归版和迭代版。 递归版:这种方法很简单,因为是前序遍历(根—左—右),所以每次先把当前节点放入res中,然后递归调用从左到右的节点即可。 参考代码: /* //...

qq_26410101的博客 299

Ubuntu关闭更新提醒的三层控制方法:从GUI到APT配置

Linux系统更新机制本质上是包管理器(APT)驱动的自动化运维流程,其核心原理在于分离‘元数据刷新’、‘安全补丁安装’和‘用户通知’三个职能。这种分层设计既保障了基础安全性,又为系统管理员提供了策略定制空间。技术价值体现在提升生产环境稳定性、规避未经验证的内核/驱动升级风险,并支持ROS、Blender渲染、工业控制等对时序敏感的应用场景。本文聚焦Ubuntu系统入门教程中高频需求——科学关闭软件更新提醒,覆盖Ubuntu 20.04及LTS版本的GUI设置、systemd服务禁用与APT配置修改三大实操

weixin_29698641的博客 393

589.n-ary-tree-preorder-traversal

给定一个 N 叉树,返回其节点值的 前序遍历 。 N 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 进阶: 递归法很简单,你可以使用迭代法完成此题吗? 示例 1: 输入:root = [1,null,3,2,4,null,5,6] 输出:[1,3,5,6,2,4] 示例 2: 输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,nu

qq_26000415的博客 407

【STK】手把手教你利用STK进行进行光电红外仿真02-STK/EOIR模块属性之一 传感器选项设置

EOIR传感器可以从空间几何属性、光谱属性、光学属性、辐射属性四个方面进行设置,并且可以设置信号传播路径中的大气特性,包括大气模型、气溶胶模型、气象学可见性和大气湿度。在定义EOIR传感器时,需要Sensor——Definition属性页中,将Sensor Type设置为EOIR。单击下面的按钮打开传感器的EOIR配置页,可以对传感器的属性进行配置,此外,还可以在场景中视情况添加相关的中心体。路径辐射损耗影响上述特性的计算,计算的结果考虑了传感器、目标位置的影响,但是还没考虑地球临边背景的影响。

weixin_44184852的博客 3199

SAP自动化-ME51N批量创建采购申请

2、需要管理员授权RZ11脚本录制回放功能。1、仅限于正对SAP日常工作的批量处理。3、数据模板按实际需求更新。物料编码,工厂,数量。

小九啥也不会 529

preorder java_LeetCode算法题-N-ary Tree Preorder Traversal(Java实现)

这是悦乐书的第268次更新,第282篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第135题(顺位题号是589)。给定一个n-ary树,返回其节点值的前序遍历。例如,给定一个3-ary树:1/ | \3 2 4/ \5 6其前序遍历结果为:[1,3,5,6,2,4]。本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统...

weixin_42524762的博客 196

关于如何在matlab中导入并翻译Hypemesh导出的大型刚度矩阵txt文本

如何将它翻译成matlab可以使用的矩阵变量,并参与运算。 由于这个大型刚度矩阵125万x125万≈1e12。matlab甚至其他计算软件无法保存这个大的一个矩阵文件。而这个刚度矩阵作为稀疏矩阵其中非零元素的数目只有有500多万。采用sparse稀疏矩阵技术是可以保存。 这里简单介绍一下这个Hypemesh导出的大型刚度矩阵txt文本。如图DMIG开头的标识符是换行符,后面两列是表示这条非零元素在刚度矩阵中列数的信息。我们已经将左边字母和符号等批量删除,得到了右边textread函数可以...

wenyusuran的专栏 1795

【Leetcode】589. N-ary Tree Preorder Traversal

题目地址: https://leetcode.com/problems/n-ary-tree-preorder-traversal/ 前序遍历多叉树。 法1:分治法 import java.util.ArrayList; import java.util.List; public class Solution { public List<Integer> preorder(N...

数学、算法爱好者的博客 212

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

N-ary Tree Preorder Traversal

/** Runtime: 1 ms, faster than 69.62% of Java online submissions for N-ary Tree Preorder Traversal. Memory Usage: 40.1 MB, less than 100.00% of Java online submissions for N-ary Tree Preorder Travers...

寂寞灵魂 221

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

leetcode 589. N-ary Tree Preorder Traversal

一题目 Given an n-ary tree, return thepreordertraversal of its nodes' values. Nary-Tree input serializationis represented in their level order traversal, each group of children is separated by the null value (See examples). Follow up: Recursive solu...

bohu83的博客 313

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode 589. N叉树的前序遍历(N-ary Tree Preorder Traversal)

589. N叉树的前序遍历 589. N-ary Tree Preorder Traversal LeetCode589. N-ary Tree Preorder Traversal 题目描述 给定一个 N 叉树,返回其节点值的前序遍历。 例如,给定一个 3 叉树 : 返回其前序遍历: [1,3,5,6,2,4]。 说明: 递归法很简单,你可以使用迭代法完成此题吗? Java 实现 Iterat...

weixin_30950607的博客 167

LeetCode - Easy - 589. N-ary Tree Preorder Traversal

Topic Tree Description https://leetcode.com/problems/n-ary-tree-preorder-traversal/ Given the root of an n-ary tree, return the preorder traversal of its nodes’ values. Nary-Tree input serialization is represented in their level order traversal. Each gro

KISS 201

Leetcode 589. N-ary Tree Preorder Traversal

文章作者:Tyan 博客:noahsnail.com &nbsp;|&nbsp; 优快云 &nbsp;|&nbsp; 简书 1. Description 2. Solution Recursive /* // Definition for a Node. class Node { public: int val; vector&lt;Node*&gt...

SnailTyan 737

LeetCode 589: N 叉树的前序遍历 N-ary Tree Preorder Traversal

题目: 给定一个 N 叉树,返回其节点值的前序遍历。Given an n-ary tree, return the preorder traversal of its nodes&#39...

爱写Bug 288

LeetCode 589. N-ary Tree Preorder Traversal

LeetCode 589. N-ary Tree Preorder Traversal (Easy) 主要知识点:树;优先级:2

温迪今天刷题了吗 1075

【java】589. N-ary Tree Preorder Traversal

问题原文如下https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/description/ 递归法 public List&lt;Integer&gt; preorder(Node root) { List&lt;Integer&gt; res = new LinkedList&lt;&gt;(); ...

amber804105的博客 677

Leetcode589.N叉树的前序遍历 N-ary Tree Preorder Traversal(Java)

Leetcode589.N叉树的前序遍历 N-ary Tree Preorder Traversal(Java) ##Tree## 与二叉树的前序遍历类似,可以采用深度优先遍历或迭代法完成 采用迭代法时,要借助栈,且注意入栈顺序和出栈遍历顺序相反,因此当前遍历结点curr的儿子结点入栈时需要对儿子结点的集合进行翻转Collections.reverse(curr),才能保证出栈遍历时的顺序为前序遍历 **时间复杂度:**O(n) DFS class Solution { ArrayList<I

qq_42411921的博客 159

LeetCode_Stack_589. N-ary Tree Preorder Traversal N 叉树的前序遍历【栈,迭代】【简单】

一,题目描述 英文描述 Given the root of an n-ary tree, return the preorder traversal of its nodes' values. Nary-Tree input serialization is represented in their level order traversal. Each group of children is separated by the null value (See examples) 中文描述 ..

&再见萤火虫&的博客 242

LeetCode-N-ary Tree Preorder Traversal

LeetCode Java N-ary Tree Preorder Traversal

坟头草一米七五 242

Leetcode - 589 - N-ary Tree Preorder Traversal

Recursive: Java: class Solution { public List<Integer> list = new ArrayList<>(); public List<Integer> preorder(Node root) { if (root == null) return list; list.add(root.val); for(N..

xin_rong的博客 288
上一篇: LeetCode算法题-Shortest Unsorted Continuous Subarray(Java实现)
下一篇: LeetCode算法题-N-ary Tree Postorder Traversal(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值