题目来源

589. N叉树的前序遍历

题目描述

class Node {public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
class Solution {public:vector<int> preorder(Node* root) {}
};

题目解析

递归

class Solution {public List<Integer> preorder(Node root) {List<Integer> list = new ArrayList<>();helper(root, list);return list;}private void helper(Node root, List<Integer> list){if (root == null){return;}list.add(root.val);for (Node child: root.children){helper(child, list);}}
}

辅助栈

  • 特例:如果root为空。返回[]
  • 初始化一个链表,用来存储结果
  • 初始化一个栈,将root压入栈
  • 此时栈不为空,弹出栈顶元素1,此时栈顶元素不为null,将栈顶元素以及不为空的子孩子压入栈:1,null,3,2,4
  • 此时栈不为空,弹出栈顶元素4,此时栈顶元素不为null,将栈顶元素以及不为空的子孩子压入栈:1,null,3,2,4,null
  • 此时栈不为空,弹出栈顶元素null,因为栈顶元素为null,再次弹出一个栈顶元素4并将4压入链表。此时栈:1,null,3,2;链表:4
  • 此时栈不为空,弹出栈顶元素4,此时栈顶元素不为null,将栈顶元素以及不为空的子孩子压入栈:1,null,3,2,null;链表:4
  • 此时栈不为空,弹出栈顶元素null,因为栈顶元素为null,再次弹出一个栈顶元素2并将2压入链表。此时栈:1,null,3;链表:4,2
  • 此时栈不为空,弹出栈顶元素3,此时栈顶元素不为null,将栈顶元素以及不为空的子孩子压入栈:1,null,3,null,5,6;链表:4,2
  • 此时栈不为空,弹出栈顶元素6,此时栈顶元素不为null,将栈顶元素以及不为空的子孩子压入栈:1,null,3,null,5,6,null;链表:4,2
  • 此时栈不为空,弹出栈顶元素null,因为栈顶元素为null,再次弹出一个栈顶元素6并将6压入链表。此时栈:1,null,3,null,5;链表:4,2,6
  • 此时栈不为空,弹出栈顶元素5,此时栈顶元素不为null,将栈顶元素以及不为空的子孩子压入栈:1,null,3,null,5,null;链表:4,2,6
  • 。。。
  • 最后链表结构:4 2 6 5 3 1
  • 将链表反转就可以得到结果了
class Solution {public List<Integer> preorder(Node root) {List<Integer> list = new ArrayList<>();if (root == null){return list;}Stack<Node> stack = new Stack<>();stack.push(root);while (!stack.empty()){Node top = stack.pop();if (top != null){stack.push(top);stack.push(null);for (Node child: top.children) {if (child != null){stack.push(child);}}}else{Node t = stack.pop();list.add(t.val);}}Collections.reverse(list);return list;}
}

leetcode:589. N叉树的前序遍历相关推荐

  1. leetcode 589. N 叉树的前序遍历,590. N 叉树的后序遍历(Java版)

    589. N 叉树的前序遍历 https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/ 题解 import java.util.A ...

  2. leetcode —— 589. N叉树的前序遍历 (使用到遍历多叉树的方法)

    给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. ---------- 解法一:通过递归的方法进行求解,时间复杂度为O(n)O( ...

  3. LeetCode 589. N叉树的前序遍历

    目录结构 1.题目 2.题解 2.1递归 2.2迭代 1.题目 给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. 说明: 递归法 ...

  4. leetcode 589.N叉树的前序遍历(js)

    题目 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例). 示例 1: 输入:root ...

  5. (C++/python)LeetCode 589. N叉树的前序遍历

    题目描述: 给定一个 N 叉树,返回其节点值的前序遍历. 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]. 思路: 递归和迭代 二叉树的前序遍历是,先遍历根节点,再遍历左节点 ...

  6. LeetCode 589. N叉树的前序遍历(前序遍历)

    文章目录 1. 题目 2. 解题 2.1 递归 2.2 循环 1. 题目 2. 解题 2.1 递归 class Solution {public:vector<int> preorder( ...

  7. 2022-5-1 Leetcode 589.N叉树的前序遍历——【其实和二叉树是一样的】

    递归 class Solution {public:vector<int> preorder(Node* root) {vector<int> ans;recursion(an ...

  8. [力扣cpp实现] 589. N叉树的前序遍历

    589. N叉树的前序遍历 1. 题目描述 2. 代码如下 1.c++ leetcode 589. N叉树的前序遍历 1. 题目描述 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 ...

  9. LeetCode Algorithm 589. N 叉树的前序遍历

    589. N 叉树的前序遍历 Ideas 二叉树的前序遍历模板,拿过来稍微一改就完事了. def preorderTraversalLoop(node):if not node:returnstack ...

  10. LeetCode每日一题题解:589. N 叉树的前序遍历-题解-python C++源代码

    589. N 叉树的前序遍历 难度简单231收藏分享切换为英文接收动态反馈 给定一个 n 叉树的根节点  root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子 ...

最新文章

  1. opencv+pythons相机标定源码解析
  2. java 网络io详解_Java网络socket编程详解
  3. Linux下解压:tar、rar、7z命令
  4. Android开发人员应该知道的一些技术
  5. Splunk学习心得
  6. Javascript提升阶段学习
  7. linux根文件分析,Linux根文件系统详解
  8. Simple-RTMP-Server 服务器搭建
  9. securecrt安装mysql_centos安装mysql(for 小白)
  10. python isnumberic用法_NETASST技术博客
  11. 正交表的查询地址汇总
  12. 关于未知的USB设备(设备描述符请求失败)的解决方法。
  13. PDF转Word软件
  14. mysql_dc.ncf_my live PC / ThinkCentre M920x Tiny / ThinkStation P330 Tiny
  15. vm12装xp系统步骤
  16. 教你快速使用AD7606的简单驱动方法--并行
  17. Opera官网打不开 下载Opera最新版本的实际地址
  18. Proficy Historian介绍
  19. 二级C语言上机考试评分标准,浅谈二级C语言上机考试评分原理
  20. 计算机文化基础简单要学什么,计算机文化基础简单介绍

热门文章

  1. php批量上传图片并带参数,php批量上传图片并把图片名放入数据库
  2. html拖动文件读取文件内容,HTML5新功能之文件拖拽上传
  3. matlab function关键字无效,matlab function函数调用, 未定义函数
  4. Retina屏幕下image-set
  5. 自动化毕设项目大全 选题推荐
  6. zip压缩包解密神器,zip压缩包有密码如何解开?
  7. pytest_函数传参和firture传参数request
  8. 《科教导刊》简介及投稿要求
  9. 网易视频接口网易视频接口
  10. 技校学计算机要不要文化,上技校学计算机有前途吗