[LeetCode] 589. N-ary Tree Preorder Traversal
原题链接:https://leetcode.com/problems/n-ary-tree-preorder-traversal/
1. 题目介绍
Given an n-ary tree, return the preorder traversal of its nodes’ values.
For example, given a 3-ary tree:
给出一个n-叉树,返回先序遍历的结果。
如果是二叉树,先序遍历的顺序是:
1 根结点
2 左子树
3 右子树
如果是n叉树,那么就是先遍历根节点,然后依次遍历各个子树。
比如下面这个三叉树:
Return its preorder traversal as: [1,3,5,6,2,4].
返回的结果是:[1,3,5,6,2,4].
2. 解题思路
2.1 递归
递归的方法仍然是最容易实现的,先将根节点放入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) {List<Integer> l = new ArrayList<>();return helper(root,l);}public List<Integer> helper(Node root,List<Integer> l){if(root == null){return l;}l.add(root.val);for(Node i : root.children){helper(i,l);}return l;}
}
2.2 迭代
使用堆栈辅助遍历。
每当遍历一个节点的时候,首先将根节点的val存入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) {List<Integer> l = new ArrayList<>();Stack<Node> s = new Stack<>();Node temp = root;while(temp != null || s.isEmpty() != true){if(temp != null){l.add(temp.val);int length = temp.children.size();if(length == 0){temp = null;continue;}for(int i = length -1; i > 0 ; i--){s.push(temp.children.get(i));}temp = temp.children.get(0); }else{temp = s.pop();}}return l;}
}
[LeetCode] 589. N-ary Tree Preorder Traversal相关推荐
- 【二叉树迭代版前序遍历】LeetCode 144. Binary Tree Preorder Traversal
LeetCode 144. Binary Tree Preorder Traversal Solution1:递归版 二叉树的前序遍历递归版是很简单的,前序遍历的迭代版相对是最容易理解的. 迭代版链接 ...
- LeetCode:144_Binary Tree Preorder Traversal | 二叉树的前序遍历 | Medium
题目:Binary Tree Preorder Traversal 二叉树的前序遍历,同样使用栈来解,代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode* ...
- [Lintcode]66. Binary Tree Preorder Traversal/[Leetcode]144. Binary Tree Preorder Traversal
66. Binary Tree Preorder Traversal/144. Binary Tree Preorder Traversal 本题难度: Easy/Medium Topic: Bina ...
- 14 二叉树的前序遍历(Binary Tree Preorder Traversal)
文章目录 1 题目 2 描述 3 解决方案 3.1 递归算法 3.1.1 遍历法(Traverse) 思路 源码 3.1.2 分治法(Devide And Conquer) 思路 源码 3.2 非递归 ...
- leetcode 589. N-ary Tree Preorder Traversal
一题目 Given an n-ary tree, return the preorder traversal of its nodes' values. Nary-Tree input seriali ...
- [LeetCode 题解]: Binary Tree Preorder Traversal
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a binary ...
- 589. N 叉树的前序遍历(javascript)589. N-ary Tree Preorder Traversal
给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例). Given the root of ...
- [leetcode] Binary Tree Preorder Traversal
Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...
- leetcode 144. Binary Tree Preorder Traversal
Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...
最新文章
- JZOJ 3943. 【GDOI2015模拟11.29】环游世界
- python游戏代码示例_练习项目20:使用python制作游戏(中)
- HOL中的四种排序,Order By、Sort By、Distribute By、Cluster By
- FPGA设计者的5项基本功
- 商丘高中计算机考试成绩查询系统,河南省中招考生服务平台2019商丘中考成绩查询系统入口...
- 刚刚收割阿里、腾讯等大厂 Offer,他说这些话一定要和你们说一下
- 如何使用SVG生成超酷的页面预加载素描动画效果
- idea 搜索不到gsonformat_IDEA开发工具插件之GsonFormat
- 机器人研究方向的自我学习[2] Matlab机器人工具箱 欧拉角 参考书:《机器人学导论》第四版
- TP5.1导出指定的多个日期的数据记录
- 有了这个列表,程序员不愁没练手的小项目了
- Mac看电视直播(通过MUMU安卓模拟器+自定义直播软件apk)
- 域名查询工具DMitry
- 大提顿国家公园美丽风景Mac动态壁纸
- jquery轮播插件
- .gitignore 不生效的解决方案
- Mysql5.7安装超详细教学
- Pruning Filters for Efficient ConvNets详解
- 虚拟机 服务器 断电,意外断电自动启动服务器和虚拟机的教程
- case when 用法
热门文章
- surface pro4-7安装黑苹果教程
- 20160218.CCPP体系具体解释(0028天)
- 选择排序-简单选择排序
- 工作之余,请IT人员开怀大笑吧
- LuoguP1710 地铁涨价
- 抓取Bilibili哔哩哔哩网站视频(Java和Python双版本实现)
- win7 android 双系统平板 p1000,优派Win7/Android双系统ViewPad 100
- 第一次尝试使Windows Live Writer发布日志
- Linux 搭建Owncloud 私有云
- 管理大规模容器集群能力包括_阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践...