遍历children_589. N叉树的前序遍历

82ce00116c445f53f667d9a14605bd5e.png

589. N叉树的前序遍历

给定一个 N 叉树,返回其节点值的前序遍历

例如,给定一个 3叉树 :

e4ed6485afb3844c3cdbeb0d636d377c.png

返回其前序遍历: [1,3,5,6,2,4]

说明: 递归法很简单,你可以使用迭代法完成此题吗?

题解:

既然是树的遍历,那么一共就是两种思路,即深度优先搜索遍历和广度优先搜索遍历。其中递归法就是深度优先搜索遍历的思想,我们从左到右依次遍历N叉树的每个节点。

具体代码如下:

/*
// 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 {List<Integer> result = new ArrayList<>();public List<Integer> preorder(Node root) {if (root == null) return result;result.add(root.val);//遍历当前节点的所有孩子节点for (int i = 0; i < root.children.size(); i++) {preorder(root.children.get(i));}return result;}
}

题目要求思考迭代方法来遍历,能想到的就是借鉴广度优先搜索遍历的方法。创建一个栈,每次栈顶弹出的元素就是前序遍历的顺序。具体来说,逆序每个节点的孩子节点,然后依次入栈,每次pop()栈顶的元素,就是前序遍历的顺序。

具体代码如下:

/*
// 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 {List<Integer> result = new ArrayList<>();public List<Integer> preorder(Node root) {if (root == null) return result;Deque<Node> deque = new ArrayDeque<>();deque.add(root);while (!deque.isEmpty()) {Node node = deque.pop();result.add(node.val);//每次逆序入栈当前节点的所有孩子节点Collections.reverse(node.children);for (Node child : node.children) {deque.push(child);}}return result;}
}

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

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

相关文章

计算机护理职称考试报名时间2015,护理职称考试怎么报名?

护理职称考试报名流程&#xff1a;网上预报名-现场确认-报名缴费。护理职称考试网上预报名及网上缴费均在中国卫生人才网&#xff0c;护理职称考试报名现场确认则按属地原则在单位或户籍所在地的卫计局。护理职称考试报名流程详解一、网上预报名考生需在规定的时间内登录中国卫…

怎么用python编程前二n-1项的等差数列的和_python 等差数列末项计算方式

等差数列末项计算 题目内容&#xff1a; 给出一个等差数列的前两项a1&#xff0c;a2&#xff0c;求第n项是多少 可以使用以下语句实现非负整数n的输入&#xff1a; nint(input()) 输入格式: 三行&#xff0c;包含三个整数a1&#xff0c;a2&#xff0c;n 输出格式&#xff1a; 一…

图纸中bs是什么意思_园建施工图中WL、BL、FL、TW、SL分别是什么意思

展开全部WL是水面标高来BL池底自标高FL地面标bai高TW墙顶标高SL 土面标高其他其他一些常du用的注解&#xff1a;PA种植区FF室内楼zhi地面标FG室外软景完成dao面标高BC路沿底标高BS踏步底标高BR栏杆扶手底标高TR栏杆扶手顶标高SL结构板顶标高扩展资料本书围绕园林工程建设主题&a…

计算机未显示移动硬盘,电脑不显示移动硬盘怎么办_移动硬盘已连接不显示解决教程...

最近有很多小伙伴咨询小编&#xff0c;电脑不显示移动硬盘怎么办&#xff0c;怎么设置才能恢复呢&#xff1f;其实操作内容很简单&#xff0c;尝试删除你的USB3.0可扩展主机控制器,再扫描硬件改动&#xff0c;今天就由小编来告诉你&#xff0c;移动硬盘已连接不显示的解决方法。…

八个角最多可以把平面分成多少部分?_一个空间最多能被分成几块?

相信大家在小学奥数中都遇到这样一个问题&#xff1a;4条直线最多能将平面分成几部分&#xff1f;这个问题并不能难倒我们&#xff0c;但是如果将问题改为&#xff1a;4个平面最多能将空间分为几部分&#xff1f;这下子我们可能就要放弃了。为了解决这个问题&#xff0c;今天我…

ios 不被遮挡 阴影_IOS开发之Bug--iOS7View被导航栏遮挡问题的解决

在实际开发中&#xff0c;遇到在UITextView的frame等于当前控制器的View的frame的情况下&#xff0c;然后运行的时候&#xff0c;发现控制器的Frame的高度y值会从导航条的位置64变化到0。导致UITextView的frame也跟着一起移动。这个问题本质其实就是iOS7View被导航栏遮挡问题&a…

破坏计算机信息系统功能罪,破坏计算机信息系统罪

破坏计算机信息系统罪2010年05月05日19:42法律咨询 我要评论一、概念&nbsp&nbsp&nbsp&nbsp破坏计算机信息系统罪(刑法第286条)&#xff0c;是指违反国家规定&#xff0c;对计算机信息系统功能或计算机信息系统中存储、处理或者传输的数据和应用程序进行破坏…

python解析html xml最好的模块_Python HTML/XML解析器BeautifulSoup(爬虫解析器)

The Dormouses storyOnce upon a time there were three little sisters; and their names were Elsie, Lacie and Tillie; and they lived at the bottom of a well....

ffmpeg运行在服务器上,FFMPEG安装在服务器上

我有一个在线服务器(共享主机方案)在Linux中&#xff0c;我不知道很多关于Linux的东西&#xff0c;我正在尝试安装ffmpeg。FFMPEG安装在服务器上当安装正在运行我得到这个消息&#xff0c;并停止安装...Installation of MPlayer-1.0rc1.tar.bz2 ....... started% Total % Recei…

python csv pandas_Python Pandas——Read_csv详解

目前最常用的数据保存格式可能就是CSV格式了&#xff0c;数据分析第一步就是获取数据&#xff0c;怎样读取数据至关重要。 本文将以pandas read_csv方法为例&#xff0c;详细介绍read_csv数据读取方法。再数据读取时进行数据预处理&#xff0c;这样不仅可以加快读取速度&#x…

python3兼容python2 print_python 字符串 r raw Python2 和 Python3 的区别及兼容技巧

前言最近 Python 之父 Guido van Rossum(龟爷)终于在 Python 官方邮件组落实了 Python 2.7 的终焉之日(EOL)。说的是 Python 2.7 的 EOL 日期最终确定为 2020 年 1 月 1 日&#xff0c;之后不会有任何更新&#xff0c;包括源码的安全补丁。所以兼容Python3已经可以说非常必要了…

nginx搭建文件服务器脚本,基于docker搭建nginx文件服务器的方法步骤

1.在本机新建配置文件docker_nginx.confserver {listen 7070;server_name localhost;charset utf-8;location /files {#在docker内nginx的目录alias /home/files;expires 1d;allow all;autoindex on;}2.启动命令docker run --name nginx -d -p 7070:7070 -v D:\dev\nginx-1.13.…

python运行不了指令_python不是内部命令或外部命令,也不是可执行程序解决方法...

简述 常见于新手初装python&#xff0c;然后忘记勾选设置环境变量(PATH)&#xff0c;或者没有重启&#xff0c;然后运行教程中的python命令时出现。 有两个解决方法&#xff1a;1.设置环境变量&#xff0c;然后重启。 2.新建命令。 如果你打算同时安装多个python版本&#xff0…

快手通过标签添加你什么意思_快快手粉丝数旁边的关注是什么意思手通过关注页添加是什么意思...

Aauto Speeter通过关注页面添加的内容意味着&#xff0c;如果你已经在关注遇到了其他人&#xff0c;并且他们对你感兴趣&#xff0c;他们将从这个关注页面添加关注&#xff0c;并成为你的粉丝。事实上&#xff0c;得到关注和粉丝并不是特别困难。如果主要发表的内容有意思&…

ovation系统服务器安装,Ovation系统介绍.ppt

Ovation系统介绍热控调试关于OVATION系统的一点简介;目录;Ovation系统的结构及硬件;典型的OVATION系统结构;Primary;网线插拔后需重启控制器&#xff0c;否则显示橙色&#xff0c;failmode报警;每扇门都有风扇;;I/0 子系统结构 ; I/O 模件; I/O 卡指示 ;模件种类减少&#xff0…

东京战纪服务器维护中,东京战纪7月21维护公告 当前测试进度介绍

东京战纪当前的测试进度已经有了很大的进步&#xff0c;接下来小编就跟大家一起看看测试期间对玩家给大家的报告吧。亲爱的喰种和CCG搜查官们7月19日中午12:00&#xff0c;我们怀着紧张又忐忑的心情开启了《东京战纪》官网限量删档技术测试。大家对《东京喰种》IP的热爱和对《东…

springboot能用python吗_Python与springboot的对接

使用springboot建立一个web demo ,其中有一个接口如下&#xff0c;为了测试加了一个参数 type: Autowired private JdbcTemplate jdbcTemplate; RequestMapping(value "/getCountry", method RequestMethod.GET) // ResponseBody public List> getUser(RequestB…

docker重启后容器消失_docker设置固定ip地址

代码来源:博客园 原文作者:雪之谷 原文链接:https://www.cnblogs.com/xuezhigu/p/8257129.html 本文版权归原作者所有,如有侵权请立即与我联系,我将及时处理。 背景: 我开发用的机器上边会启动几个容器,就因为保洁阿姨碰了一下我的插排,我的机器被断电关机了。 默认情况下…

模型稳定后放在服务器上,把工程放在服务器上

把工程放在服务器上 内容精选换一换获取方式&#xff1a;Ascend-mindx-msinstaller_{version}.zip&#xff1a;获取链接适用场景&#xff1a;在一台Linux服务器上使用msInstaller工具给本机安装开发或运行环境。在一台Linux服务器上使用msInstaller工具远程给昇腾AI设备安装开发…

洛阳地铁一号线无人驾驶_洛阳地铁洛阳造:智能化车厢、无人驾驶、加热座椅……...

大家好&#xff0c;印象妹又来给大家播报地铁的情况啦&#xff01;自从12月1日地铁1号线试运行启动&#xff0c;后台里经常有人私信印象妹&#xff0c;多讲讲咱大洛阳的地铁情况&#xff0c;下面&#xff0c;来咯&#xff01;身为洛阳人&#xff0c;我们都知道洛阳是中西部地区…