589. N叉树的前序遍历

589. N-ary Tree Preorder Traversal

LeetCode589. N-ary Tree Preorder Traversal

题目描述

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

例如,给定一个 3 叉树 :

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

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

Java 实现

Iterative Solution

import java.util.LinkedList;
import java.util.List;
import java.util.Stack; 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> result = new LinkedList<>();
if (root == null) {
return result;
}
Stack<Node> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
Node node = stack.pop();
if (node.children != null) {
for (int i = node.children.size() - 1; i >= 0; i--) {
stack.push(node.children.get(i));
}
}
result.add(node.val);
}
return result;
}
}

Recursive Solution

import java.util.LinkedList;
import java.util.List; class Node {
public int val;
public List<Node> children; public Node() {
} public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
} class Solution {
List<Integer> result = new LinkedList<>(); public List<Integer> preorder(Node root) {
if (root == null) {
return result;
}
result.add(root.val);
List<Node> node = root.children;
for (int i = 0; i < node.size(); i++) {
preorder(node.get(i));
}
return result;
}
}

相似题目

参考资料

最新文章

  1. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
  2. marked.js简易手册
  3. java的数据类型转换
  4. 设置时间&amp;时区
  5. POI 设置
  6. lucene和ElasticSearch基本概念
  7. 关于rails里集成测试assert_template的写法
  8. [UML]UML之开篇
  9. 修改BASH的配色
  10. CSS布局模型思考
  11. 前端要怎么学createjs!!!???
  12. Visual Studio跨平台开发实战(5) - Xamarin Android多页面应用程式开发
  13. POJ 1236 Network of Schools (tarjan算法+缩点)
  14. 极光推送(C#)
  15. Constructor &gt;&gt; @Autowired &gt;&gt; @PostConstruct
  16. BZOJ.4515.[SDOI2016]游戏(树链剖分 李超线段树)
  17. IntelliJ IDEA 自动导入包 快捷方式 关闭重复代码提示
  18. python -c 处理shell字符串
  19. Zookeeper--Watcher 和 ACL
  20. Struts2的动态方法,及result跳转方式,全局结果以及默认的action的配置

热门文章

  1. [golang]golang如何覆盖输出console,实现进度条;golang一个骚气的进度提示库
  2. 44个Java性能优化
  3. Shell编程——脚本编写思路与过程
  4. elasticsearch type类型创建时注意项目,最新的elasticsearch已经不建议一个索引下多个type
  5. IntelliJ IDEA配置Tomcat运行web项目
  6. #C++初学记录(遍历)
  7. 时间控件My97DatePicker事件监听及用法
  8. postgresql 增量备份
  9. Audit(二)--清理Audit数据
  10. [教程] Packt - Create a Game Environment with Blender and Unity by Darrin Lile